插入排序

  之前学习数据结构几度丢弃,我却一直忽略了最重要的一点,开始的学习的不要贪多,每天完成一点点,终会完成既定的目标!

插入排序

动画图示:http://visualgo.net/sorting.html

代码:(默认排列,小——大)

 

 1 void swap(int *p1, int *p2)
 2 {
 3     int temp;
 4     temp = *p1;
 5     *p1 = *p2;
 6     *p2 = temp;
 7 }
 8 
 9 void insertSort(int *a, int len)
10 {
11     int i,j;
12     for(i=0; i<len; ++i)
13         for(j=i+1;j>=1;--j)
14         {
15             if(a[j] < a[j-1])
16                 swap(&a[j], &a[j-1]);
17         }
18 }
View Code

插入排序2:搜索的同时无序序列移动腾出空间

 1 void insertSort2(int a[], int len)
 2 {
 3     int i,j;
 4     for(i=1; i<len; ++i)
 5         if(a[i] < a[i-1])
 6         {
 7             int temp = a[i];
 8             for(j=i-1;j>=0&&a[j]>temp; --j)
 9                 a[j+1] = a[j];
10             a[j+1] = temp;
11         }
12 }

 

测试代码:

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     void insertSort(int *a, int len);
 6     int a[7] = {2, 4, 1, 13, 8, 25, 3};
 7     insertSort(a, 7);
 8     for(int i=0; i<7; ++i)
 9         cout << a[i] << " ";
10     cout << endl;
11     return 0;
12     
13 }
View Code

 

posted @ 2015-04-22 20:20  Chris*Chen  阅读(184)  评论(0编辑  收藏  举报