计数排序、插入排序

算法说明请参考算法导论

 1 #ifndef COUNTSORT_H
 2 #define COUNTSORT_H
 3 
 4 #include 
 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

你可能感兴趣的:(计数排序、插入排序)