1 #include <iostream>
2 #include <cstdlib>
3
4 #define ARR_SIZE 10
5
6 using namespace std;
7
8 /* 想象一下打牌时发完牌整理的时候,不同的是打牌我们一眼就能看出来这张牌应该插在哪个位置,而插入排序要逐一去对比前面已排好的元素,逐一去交换 */
9 void insertsort(int a[]);
10 void CreateRandArr(int a[]);
11
12 int main()
13 {
14 int a[ARR_SIZE];
15 int i;
16 CreateRandArr(a);
17 insertsort(a);
18 cout << "after sort: " << endl;
19 for(i=0;i<ARR_SIZE;i++)
20 {
21 cout << a[i] << ' ' ;
22 }
23
24 return 0;
25 }
26
27 void insertsort(int a[])
28 {
29 int i, j, temp;
30 for(i=1; i<ARR_SIZE; i++) /* i不能从0开始。否则j-1小于0 */
31 {
32 for(j = i; j>0 && a[j]<a[j-1]; j--)
33 {
34 temp = a[j];
35 a[j] = a[j-1];
36 a[j-1] = temp;
37 }
38 }
39 }
40
41 void CreateRandArr(int a[])
42 {
43 int i;
44 for(i=0;i<ARR_SIZE;i++)
45 {
46 a[i] = rand() % 100;
47 cout <<a[i] << ' ' ;
48 }
49 cout << endl;
50 }