首页 > 其他 > 详细

地精排序 Gnome Sort

时间:2014-04-02 11:22:50      阅读:558      评论:0      收藏:0      [点我收藏+]

地精排序

其实思想很简单,往前冒泡,一旦发生数据交换,就往回冒泡,直到把被交换数字放入正确位置,之后,继续前进

举例

例如待排数组:

[6 2 4 1 5 9]

[0 1 2 3 4 5]

 

看一下具体的排序过程

[ i = 0 ]时啥也不干,先让i自增1,达到值为1才开始真正的比较

交换前[6 2 4 1 5 9][ i = 0]

交换后[6 2 4 1 5 9][ i = 1]

 

[ i = 1 ]比较6和2,发生交换,只要发生交换i就减1

交换前[6 2 4 1 5 9][ i = 1]

交换后[2 6 4 1 5 9][ i = 0]

 

[ i = 0 ]又成0了,啥也不干,自增变成1再说

交换前[2 6 4 1 5 9][ i = 0]

交换后[2 6 4 1 5 9][ i = 1]

 

[ i = 1 ]再比较2和6,不交换,只要不要换就自增1

交换前[2 6 4 1 5 9][ i = 1]

交换后[2 6 4 1 5 9][ i = 2]

 …………

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include<iostream>
 
using namespace std;
 
 
void myGnomeSort(int ds[],int length){
    int i=0;
    while(i<length){
         
        if(0 == i){
            i++;
            continue;
        }
        if(ds[i]<ds[i-1]){
            int temp=ds[i];
            ds[i]=ds[i-1];
            ds[i-1]=temp;
            i--;
        }
        else
            i++;
    }
 
}
 
int main(){
    int data[6]={6,4,2,1,5,9}; 
 
    myGnomeSort(data,6);
 
    for(int i=0;i<6;i++)
        cout<<data[i]<<" ";
    getchar();
 
    return 0;
}

  

地精排序 Gnome Sort,布布扣,bubuko.com

地精排序 Gnome Sort

原文:http://www.cnblogs.com/seair/p/3636762.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!