C语言 数组排序法总结
//快速排序法 void QuickSort(int *a, int left, int right) { int i = left; int j = right; int k = a[left]; if (i >= j) { return; } while (i < j) { while ((i < j) && (k <= a[j])) { j--; } a[i] = a[j]; while ((i < j) && (k >= a[i])) { i++; } a[j] = a[i]; } a[i] = k; QuickSort(a, left, i-1); QuickSort(a, i+1, right); } //冒泡排序法 void BubbleSort(int *a, int len) { int i, j, k; for (i=0;i<len-1;i++) for(j=i+1;j<len;j++) { if (a[i] > a[j]) { k = a[i]; a[i] = a[j]; a[j] = k; } } } //选择排序法 //找出最小值与第一个位置交换,在剩余的找出最小值与第二个位置交换,以此类推 void SelectSort(int *a, int len) { int i, j, k, tmp; int m; for (i=0;i<len-1;i++) { tmp = a[i]; for (j=i+1;j<len;j++) { if (tmp > a[j]) { tmp = a[j]; k = j; } } if (tmp != a[i]) { a[k] = a[i]; a[i] = tmp; } } } //插入排序法 //从第二个位置起依次将此数插入前面,使前面的数保持排好的顺序 void InsertSort(int *a, int len) { int i, j, k; for (i=1;i<len;i++) { k = a[i]; for (j=i-1;j>=0;j--) { if (a[j] > k) { a[j+1] = a[j]; a[j] = k; } } } }