Hark的数据结构与算法练习之地精(侏儒)排序
算法说明
地精排序是交换排序的一种,它是冒泡排序的一种改良,我感觉和鸡尾酒排序挺像的。
不同之处是鸡尾酒排序是从小到大,然后再从大到小切换着排序的。而地精排序是上来先从小到大排序,碰到交换到再从大到小,接着再从小到大进行排序。
举个例子:
对8,6,4,5,1进行升序排序
1、8与6交换,结果是
{6,8,4,5,1}
2、8与4交换,结果是
{6,4,8,5,1}
3、4与6交换,结果是
{4,6,8,5,1}
4、5与8交换,结果是
{4,6,5,8,1}
5、6与5交换,结果是
{4,5,6,8,1}
6、8与1交换,结果是
{4,5,6,1,8}
7、6与1交换,结果是
{4,5,1,6,8}
8、5与1交换,结果是
{4,1,5,6,8}
9、4与1交换,结果是
{1,4,5,6,8}
代码
使用的是java
package hark.sort.exchangesort;/** 地精排序(侏儒排序)*/
public class GnomeSort {public static void main(String[] args) {int[] arrayData = { 5, 3, 2, 4, 3, 1, 2, 1, 4, 2, 4, 21, 6, 3, 2, 1 };GnomeSortMethod(arrayData);for (int integer : arrayData) {System.out.print(integer);System.out.print(" ");}}public static void GnomeSortMethod(int[] arrayData) {int index = 0;int temp;while (index < arrayData.length - 1) {if (arrayData[index] <= arrayData[index + 1]) {index++;} else {temp = arrayData[index];arrayData[index] = arrayData[index + 1];arrayData[index + 1] = temp;if (index > 0) {index--;} else {index++;}}}}
}
参考
http://blog.csdn.net/wklken/article/details/7606519
转载于:https://www.cnblogs.com/hark0623/p/4353949.html
Hark的数据结构与算法练习之地精(侏儒)排序相关推荐
- Hark的数据结构与算法练习之简单选择排序
/** 简单选择排序*/ public class SimpleSort {public static void main(String[] args) {int[] arrayData = { 5, ...
- Hark的数据结构与算法练习之若领图排序ProxymapSort
算法说明 若领图排序是分布排序的一种. 个人理解,若领图排序算是桶排序+计数排序的变异版,桶排序计数排序理解了,那么若领图排序理解起来就会比较容易.区别其实就是存储中间值的方式做了调整-- 话说,这个 ...
- 数据结构与算法笔记 —— 十大经典排序及算法的稳定性
一.十大经典排序算法 排序算法是<数据结构与算法>中最基本的算法之一. 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全 ...
- 数据结构与算法之-----图(拓扑排序)
[ 写在前面的话:本专栏的主要内容:数据结构与算法. 1.对于初识数据结构的小伙伴们,鉴于后面的数据结构的构建会使用到专栏前面的内容,包括具体数据结构的应用,所使用到的数据 ...
- 数据结构与算法 | 直接插入排序、希尔排序
前几章讲了选择排序中的直直接选择排序.双向选择排序.堆排序,这次来讲讲利用'插入'为核心来实现的插入排序算法. 插入排序 把待排序的记录按其关键码值的大小逐个插入到一 个已经排好序的有序序列中,直到所 ...
- Hark的数据结构与算法练习之珠排序
---恢复内容开始--- 算法说明 珠排序是分布排序的一种. 说实在的,这个排序看起来特别的巧妙,同时也特别好理解,不过不太容易写成代码,哈哈. 这里其实分析的特别好了,我就不画蛇添足啦. 大家看一 ...
- Hark的数据结构与算法练习之锦标赛排序
算法说明 锦标赛排序是选择排序的一种. 实际上堆排序是锦标赛排序的优化版本,它们时间复杂度都是O(nlog2n),不同之处是堆排序的空间复杂度(O(1))远远低于锦标赛的空间复杂度(O(2n-1)) ...
- Hark的数据结构与算法练习之圈排序
算法说明 圈排序是选择排序的一种.其实感觉和快排有一点点像,但根本不同之处就是丫的移动的是当前数字,而不像快排一样移动的是其它数字.根据比较移动到不需要移动时,就代表一圈结束.最终要进行n-1圈的比较 ...
- Hark的数据结构与算法练习之基数排序
算法说明 基数排序是基于计数排序的,所以看这个之前要先看一下计数排序对于理解基数排序是很有帮助的(发现计数和基数的音节几乎一致啊).这个我有写,请点击. OK,现在你肯定已经熟悉了计数排序,那么我就来 ...
- Hark的数据结构与算法练习之图书馆排序
算法说明 图书馆排序是插入排序的变种,典型的以空间换时间的一种方法.我个人感觉这种思路可以学习借鉴,但直接使用的场景应该不大. 我们知道,真正的插入排序通常往前边插入元素后,我们要把后边所有的元素后移 ...
最新文章
- LINQ 学习路程 -- 查询操作 GroupBy ToLookUp
- 【逆序对】Ultra - Quicksort
- 对人脑而言,阅读计算机代码和阅读语言有何不同?
- 为什么说康托尔知道聚宝盆的秘密?
- 你还在等着用户反馈BUG?
- 堆(heap)和栈(stack)有什么区别??
- python变量详解_Python 变量详解[学习 Python 必备基础知识][看此一篇就够了]
- LeetCode-38 报数
- SAP CRM IBASE read header debug
- 问题 1051: [编程入门]结构体之成绩统计2
- IE与Firefox的CSS兼容大全~~论坛推荐~!!!
- oracle的in集合,oracle 查询in操作 查询结果按in集合顺序显示
- Kaldi AMI数据集脚本学习1----cmd.sh和path.sh
- oracle去除逗号函数,oracle逗号分隔函数
- 美图秀秀计算机教程,如何用美图秀秀换背景?美图秀秀换背景图文教程-电脑教程...
- 联想新电脑桌面没有计算机,联想电脑没有wifi图标不见了怎么办
- php 判断客户端类型,基于php实现判断客户端类型
- java 读取文件inputstream_使用FileInputStream读取本地文件
- cordova下使用高德地图js api在4g流量下定位失败问题的解决
- C语言中的光标定位函数
热门文章
- html img 能显示psd吗_教育一体机迈向大尺寸化,小间距显示屏能进入教室吗?
- mybatis中resultMap的几种用法
- vscode配置及快捷键(未完成待续)
- Java 8 新日期时间 API ( 上 ) – 本地日期时间
- 通过adb查看当前页面中显示的窗口Activity名称
- 深度神经网络训练过程中为什么验证集上波动很大_一个值得深思的问题?为什么验证集的loss会小于训练集的loss...
- 【渝粤教育】国家开放大学2018年春季 0242-22T机械制图 参考试题
- [渝粤教育] 西南科技大学 旅客运输组织 在线考试复习资料
- 【渝粤教育】电大中专品牌管理与推广 (2)_1作业 题库
- ubuntu16.04创建自己的桌面图标