经典排序算法(C语言) 算法不包含数据结构 纯手写,非copy! 都是自定义外部函数 改动优化版本
冒泡排序 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 void BubbleSort (int array [], int length) { int num; _Bool swap = 1 ; for (int i = 0 ; i < length; i++) { for (int j = 1 ; j < length - i; j++) { if (array [j-1 ] > array [j]) { num = array [j]; array [j] = array [j-1 ]; array [j-1 ] = num; swap = 0 ; } } if (swap) return ; swap = 1 ; } }
选择排序 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 void SelectionSort (int array [], int length) { int max,min; int swap; for (int i = 0 ; i < length/2 ; i++) { min = i, max = length - 1 - i; for (int j = i; j < length - i; j++) { if (array [min] > array [j]) min = j; if (array [max] < array [j]) max = j; } swap = array [min]; array [min] = array [i]; array [i] = swap; swap = array [max]; array [max] = array [length-1 -i]; array [length-1 -i] = swap; } }
插入排序 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 void InsertionSort (int array [], int length) { int num; for (int i = 1 ; i < length; i++) { num = array [i]; for (int j = i; j >= 0 ; j--) { if (j == 0 || num > array [j-1 ]) { array [j] = num; break ; } array [j] = array [j-1 ]; } } }
快速排序 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 void QuickSort (int array [], int L, int R) { if (L < R) { int left = L, right = R; int compara = array [left]; while (left < right) { while (left < right && array [right] > compara) right--; if (left < right) { array [left] = array [right]; left++; } while (left < right && array [left] < compara) left++; if (left < right) { array [right] = array [left]; right--; } } array [left] = compara; QuickSort(array , L, right -1 ); QuickSort(array , left+1 , R); } }