标签:style blog io ar color sp for on div
#include <stdio.h> #define True 1 #define False 0 void BubbleSort(int A[] , int N); void BubbleSort2(int A[] , int N); void BubbleSort3(int A[] , int N); int main(int argc, const char * argv[]) { int A[15] = {1,2,3,13,14,4,5,6,7,8,9,10,11,12,15}; BubbleSort3(A , 15); for (int i = 0 ; i < 15; i++) printf("%d " , A[i]); return 0; } //BubbleSort 的最基础的版本! void BubbleSort(int A[] , int N) { int i , j ; int Tmp ; for (i = 0 ; i < N ; i ++ ) for (j = 1 ; j < N - i ; j ++) if (A[ j - 1 ] > A[ j ]) { Tmp = A[j]; A[j] = A[j - 1 ] ; A[j - 1] = Tmp ; } } //BubbleSort 的改进版本一 // 此改进版是加入一个信号标志flag // 如果在一趟过程中发生了交换,则置flag = 1 // 否则如果一趟过程都没发生交换,则数组已经排序好 void BubbleSort2(int A[] , int N) { int i , j ; int flag = True ; int Tmp ; i = 0 ; while (flag) { flag = False ; for (j = 1 ; j < N - i ; j ++) if (A[j - 1] > A[j] ) { Tmp = A[j]; A[j] = A[j -1]; A[j-1] = Tmp ; flag = True ; } i++ ; } } //冒泡排序改进版三 //flag记录最后一次交换发生的位置,即后面的已经是有序的了 //不需要再交换了, void BubbleSort3(int A[] , int N) { int i , j ; int flag = N ; int Tmp ; while (flag) { i = flag ; flag = 0 ; //注意这里应该先设置为0 ,不然就存在死循环回不去了 for (j = 1; j < i; j ++) if (A[j - 1] > A[j]) { Tmp = A[j] ; A[j] = A[j - 1 ]; A[j - 1] = Tmp ; flag = j; } } }
标签:style blog io ar color sp for on div
原文地址:http://www.cnblogs.com/Big-Ding/p/4151168.html