基本排序算法
bubbleSort
关键点:一轮能够确定一个数,内层循环有:a[j]>a[j+1]
,保证a[j+1]
不溢出,第一轮循环需要从i=1
开始,内层循环从j=0
开始,j<n-i
1 2 3 4 5 6 7 8 9 10 11 12
| void BubbleSort(int a[], int n) {//冒泡排序,a为数据数组, n为数组元素个数 int tmp; for (int i = 1; i < n; ++i) { for (int j = 0; j < n - i; ++j) { if (a[j] > a[j + 1]) {//前一个元素大于后一个元素 tmp = a[j]; a[j] = a[j + 1]; a[j + 1] = tmp; } } } }
|
selectSort
关键点:与bubble刚好相反,它是从前往后排,所以关键在内层循环的int j=i
开始点,而冒泡则是内层循环的j<n-i
结束的点
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| void selectSort(int a[], int n) {//选择排序 for (int i = 0; i < n; ++i) { int m = i; for (int j = i; j < n; ++j ) { if (a[m] > a[j]) { m = j; } } int tmp = a[i]; a[i] = a[m]; a[m] = tmp; } }
|