之前学习数据结构几度丢弃,我却一直忽略了最重要的一点,开始的学习的不要贪多,每天完成一点点,终会完成既定的目标!
插入排序:
动画图示: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 }
插入排序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 }