地精排序

算法思想:

利用一层循环,进行来回冒泡。对一个乱序数组a[n]实现从小到大排列。

当   i=0   的时候, 什么都不做,只是  i++  ;
当第  i  个数和第  i+1  个数比较,即 a[i-1] 和 a[i] 比较,
a[i-1]<=a[i]  , 不需要进行交换的时候, i++;
a[i-1]>a[i]  , 需要进行交换的时候,交换两个数,然后 i--;

重复上述操作,直到i=n结束。

举个例子吧:

{6,2,4,1,5,9}=>{1,2,4,5,6,9}

i=0;    {6,2,4,1,5,9}    i++;
i=1;    {2,6,4,1,5,9}    i--;
i=0;    {2,6,4,1,5,9}    i++;
i=1;    {2,6,4,1,5,9}    i++;
i=2;    {2,4,6,1,5,9}    i--;
i=1;    {2,4,6,1,5,9}    i++;
i=2;    {2,4,6,1,5,9}    i++;
i=3;    {2,4,1,6,5,9}    i--;
i=2;    {2,1,4,6,5,9}    i--;
i=1;    {1,2,4,6,5,9}    i--;
i=0;    {1,2,4,6,5,9}    i++;
i=1;    {1,2,4,6,5,9}    i++;
i=2;    {1,2,4,6,5,9}    i++;
i=3;    {1,2,4,6,5,9}    i++;
i=4;    {1,2,4,5,6,9}    i--;
i=3;    {1,2,4,5,6,9}    i++;
i=4;    {1,2,4,5,6,9}    i++;
i=5;    {1,2,4,5,6,9}    i++;
i=6=n;结束

代码如下:

int a[N] = {1,2,5,…};
int i=0;
while(i

你可能感兴趣的:(地精排序)