今天在讀書的過程中,又學到了一種排序方法。它和選擇排序很類似,我以前已經寫過選擇排序的方法,在這裡就不對選擇排序進行過多的說明了,如果你想了解選擇排序是如何實現的,你可以去看我博客裡的關於選擇排序的那篇文章。
(I)這個排序算法的接口是1)待排序的數組名2)待排序的數組的長度
(II)排序的思想:
(1)從該數的第二元素開始,一直到該數的最後一個元素,依次和該元素前面的所有元素進行比較
for(int i=1;i<insize;i++)
{ }
(2)首先記錄該元素的下標
int element=inarray[i];
然後從離它最近的它前面的數開始,一直到該數組的開始位置,接下來要做的事就如果不滿足某種排序原則,就進行交換,並且讓下標再減一,以便進行下一次比較 while(j>=0&&inarray[j]>element)
{
inarray[j+1]=inarray[j];
j--;
}
(3)最後重復上述過程直到到該數組的每一個元素都和它前面的每一個元素全部比較一遍
下面是該排序方法的完整代碼以及實現,做個參考
#include<iostream>
using namespace std;
void sort2(int inarray[],int insize)
{
for(int i=1;i<insize;i++)
{
int element=inarray[i];
int j=i-1;
while(j>=0&&inarray[j]>element)
{
inarray[j+1]=inarray[j];
j--;
}
inarray[j+1]=element;
}
}
int main()
{
int a[10]={9,6,3,8,5,2,7,4,1,0};
sort2(a,10);
for(int i=0;i<10;i++)
cout<<a[i]<<endl;
return 0;
}