排序方法四(与选择排序很类似)
今天在读书的过程中,又学到了一种排序方法。它和选择排序很类似,我以前已经写过选择排序的方法,在这里就不对选择排序进行过多的说明了,如果你想了解选择排序是如何实现的,你可以去看我博客里的关于选择排序的那篇文章。我有思考了一下,这种排序方法就是直接排序!
(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;
}