赞
踩
插入排序的思想就是,先分为有序和无序,从无序当中拿出一个,放到有序的合适位置里面。
真得非常类似于打牌。
这种方法与冒泡法非常的类似 。
- 1 //直接插入排序:
- 2 #include<iostream>
- 3 using namespace std;
- 4 void insertSort(int r[],int n);
- 5
- 6 int main() {
- 7 int r[]={24,1,56,2,14,58,15,89};
- 8 for(int i=0;i<8;i++) {
- 9 cout<<r[i]<<'\t';
- 10 }
- 11 cout<<endl;
- 12 insertSort(r,8);
- 13 for(int i=0;i<8;i++) {
- 14 cout<<r[i]<<'\t';
- 15 }
- 16 cout<<endl;
- 17 return 0;
- 18 }
- 19
- 20 void insertSort(int r[],int n) {
- 21 int j,s;
- 22 for(int i=1;i<n;i++)
- 23 {
- 24 for(j=i-1,s=r[i];s<r[j] && j>=0;j--)
- 25 {
- 26 printf("i=%d,j=%d, s=%d,r[j+1]=%d,r[j]=%d\n",i, j, s, r[j+1], r[j]);
- 27 r[j+1]=r[j];
- 28 }
- 29 r[j+1]=s;
- 30 for(int k=0;k<8;k++) {
- 31 cout<<r[k]<<'\t';
- 32 }
- 33 cout<<endl;
- 34 }
- 35 }
-
- root@codemanager01:/home/maokx/learn/c++/insertSort# g++ insertSort1.cpp -o insertSort1
- root@codemanager01:/home/maokx/learn/c++/insertSort# ./insertSort1
- 24 1 56 2 14 58 15 89
- i=1,j=0, s=1,r[j+1]=1,r[j]=24
- 1 24 56 2 14 58 15 89 ---注:这是插入第2张牌
- 1 24 56 2 14 58 15 89 ---注:这是插入第3张牌
- i=3,j=2, s=2,r[j+1]=2,r[j]=56
- i=3,j=1, s=2,r[j+1]=56,r[j]=24
- 1 2 24 56 14 58 15 89 ---注:这是插入第4张牌
- i=4,j=3, s=14,r[j+1]=14,r[j]=56
- i=4,j=2, s=14,r[j+1]=56,r[j]=24
- 1 2 14 24 56 58 15 89 ---注:这是插入第5张牌
- 1 2 14 24 56 58 15 89 ---注:这是插入第6张牌
- i=6,j=5, s=15,r[j+1]=15,r[j]=58
- i=6,j=4, s=15,r[j+1]=58,r[j]=56
- i=6,j=3, s=15,r[j+1]=56,r[j]=24
- 1 2 14 15 24 56 58 89 ---注:这是插入第7张牌
- 1 2 14 15 24 56 58 89 ---注:这是插入第8张牌
- 1 2 14 15 24 56 58 89
- root@codemanager01:/home/maokx/learn/c++/insertSort#

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。