算法说明请参考算法导论
1 #ifndef COUNTSORT_H 2 #define COUNTSORT_H 3 4 #include <iostream> 5 6 using namespace std; 7 8 /************************************************* 9 Function: // count_sort 10 Description: // 计数排序 11 Input: // array_a: 输入数组 12 // size: 数组元素个数 13 // max: 数组中最大元素 14 Return: // 无 15 *************************************************/ 16 void count_sort(int *array_a, int size, int max) 17 { 18 int *array_b = new int[size]; 19 int *array_c = new int[max]; 20 int i; 21 int temp; 22 23 24 for(i = 0; i < max; ++i) 25 { 26 array_c[i] = 0; 27 } 28 //对元素出现次数进行计数 29 for(i = 0; i < size; ++i) 30 { 31 temp = array_a[i]; 32 array_c[temp]++; 33 } 34 35 for(i = 1; i < max; ++i) 36 { 37 array_c[i] += array_c[i - 1]; 38 } 39 for (i = 0; i < max; i++) 40 { 41 cout << array_c[i] << " "; 42 } 43 cout << endl; 44 for(i = 0; i < size; ++i) 45 { 46 temp = array_c[array_a[i]] - 1; 47 array_b[temp] = array_a[i]; 48 --array_c[array_a[i]]; 49 } 50 memcpy(array_a, array_b, size * sizeof(int)); 51 52 53 delete[] array_b; 54 delete[] array_c; 55 return; 56 } 57 58 #endif
1 /************************************************* 2 Function: // insert_sort 3 Description: // 插入排序 4 Input: // array_a: 输入数组 5 // size: 数组元素个数 6 Return: // 无 7 *************************************************/ 8 void insert_sort(int *array_a, int size) 9 { 10 int i, j, temp; 11 for(i = 1; i < size; ++i) 12 { 13 temp = array_a[i]; 14 for(j = i - 1; j >= 0; --j) 15 { 16 if(array_a[j] > temp) 17 { 18 array_a[j + 1] = array_a[j]; 19 } 20 else 21 { 22 break; 23 } 24 } 25 array_a[j + 1] = temp; 26 27 for(j = 0 ; j < size; j++) 28 { 29 cout << array_a[j] << " "; 30 } 31 cout << endl; 32 } 33 }
转载于:https://www.cnblogs.com/liuxg/archive/2013/03/27/2984542.html