通常人们整理牌的方法是一张一张的来,将每一张牌插入其他已有序的牌中的适当位置。在计算机中,为了要给插入的元素腾空间,我们需要将其他元素在插入之前都要向右移动一位。这种算法叫做插入排序。
与选择排序一样,索引左边的所有元素都是有序的,但他们最终的位置还不确定,为了给更小的元素腾空间,他们可能被移动。但是当索引达到数组右端是,数组排序就完成了。
和选择排序不同的是,插入排序所需的时间取决于输入元素的初始顺序。例如,对一个很大且其中的元素已经有序或者接近有序的数组进行排序将会比对随机顺序的数组或是逆序数组进行排序要快的多。
1 #include"iostream"
2 #define N 10
3 using namespace std;
4 void excha(int &a,int &b);
5 int main(){
6 int a[N]={1,3,2,4,5,6,7,8,9,0};
7 int i,j,min;
8 for(int i=1;i<N;i++){
9
10
11 for(int j=i;j>0&&(a[j]<a[j-1]);j--){
12 excha(a[j],a[j-1]);
13 }
14 }
15 for(int i=0;i<N;i++){
16 cout<<a[i]<<" ";
17 }
18 return 0;
19 }
20 void excha(int &a,int &b){
21 int c;
22 c=a;
23 a=b;
24 b=c;
25 }