前提
void X_Sort ( ElementType A[], int N )
大多数情况下,为简单起见,讨论从小大的整数排序
N是正整数
只讨论基于比较的排序(> = < 有定义)
只讨论内部排序
稳定性:任意两个相等的数据,排序前后的相对位置不发生改变
1.冒泡排序
(从小到大排序)
物理意义:大泡泡往下沉,小泡泡往上冒
每次比较相邻两个泡泡,符合条件,交换位置,每一轮比较完,最大的泡泡沉到最底下。
最好情况:顺序T = O( N )
最坏情况:逆序T = O( N^2 )
稳定
1 #include <stdio.h> 2 3 typedef int ElementType; 4 5 void BubbleSort(ElementType A[], int N) 6 { 7 for(int P = N-1; P >= 0; P--) { 8 int flag = 0; 9 for(int i = 0; i < P; i++) { 10 if( A[i] > A[i+1] ) { 11 ElementType temp = A[i]; //swap A[i] A[i+1] 12 A[i] = A[i+1]; 13 A[i+1] = temp; 14 flag = 1; 15 } 16 } 17 if(flag == 0) 18 break; 19 } 20 } 21 22 int main() 23 { 24 int a[] = {34,8,64,51,32,21}; 25 BubbleSort(a,6); 26 for(int i = 0; i < 6; i++) 27 printf("%d ",a[i]); 28 29 return 0; 30 }