地精排序 Gnome Sort
2014-03-31 20:11
141 查看
地精排序
其实思想很简单,往前冒泡,一旦发生数据交换,就往回冒泡,直到把被交换数字放入正确位置,之后,继续前进举例
例如待排数组:[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]
…………
示例代码
#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; }
相关文章推荐
- 再探地精排序GnomeSort
- 地精排序-Gnome Sort
- 地精排序Gnome Sort ----(排序算法十)
- 地精排序Gnome Sort ----(排序算法十)
- 地精排序(Gnome Sort) 算法
- 经典排序算法 - 地精排序Gnome Sort
- 地精排序Gnome Sort
- java排序算法_008地精排序(Gnome Sort)
- 地精排序(Gnome Sort) 最简单的排序算法
- 数据结构杂谈(二)简单有趣的地精排序Gnome sort
- js数组的sort排序详解
- Collections.sort方法对list的两种排序方式
- Java排序算法(四)--直接插入排序(InsertSort)
- sort 排序
- Linux sort uniq awk head 完成访问日志统计排序功能
- 1.插入排序—直接插入排序(Straight Insertion Sort)
- leetcode—217. Contains Duplicate 查找双数,python排序sort、sorted,for遍历的范围
- JAVA对list集合进行排序Collections.sort()
- pandas sort_values 排序后, index 也发生了改变,不改变的情况下需要 reset_index(drop = True)
- JavaScript 使用sort()方法来给数组排序