皮匠排序"/>
Hark的数据结构与算法练习之臭皮匠排序
算法说明
个人感觉是没有意义的算法,只是用来作为学术研究。或者说开拓一下思维。
从wikipedia copy来的一句解释的话:Stooge排序是一种低效的递归排序算法,甚至慢于冒泡排序。在《算法导论》第二版第7章(快速排序)的思考题中被提到,是由Howard、Fine等教授提出的所谓“漂亮的”排序算法。
实现逻辑:
同样也是从wikipedia copy来的
1、如果最后一个值小于第一个值,则交换这两个数
2、如果当前集合元素数量大于等于3:
3、使用臭皮匠排序前2/3的元素
4、使用臭皮匠排序后2/3的元素
5、再次使用臭皮匠排序前2/3的元素
代码
使用的是java
package hark.sort.exchangesort;/** 臭皮匠排序*/
public class StoogeSort {public static void main(String[] args) {int[] arrayData = { 2, 3, 4, 5, 6, 7, 8, 9, 1 };StoogeSortMethod(arrayData, 0, arrayData.length - 1);for (int integer : arrayData) {System.out.print(integer);System.out.print(" ");}}public static void StoogeSortMethod(int[] arrayData, int beginIndex,int endIndex) {if (endIndex - beginIndex + 1 >= 3) {int t = (endIndex - beginIndex + 1) / 3;StoogeSortMethod(arrayData, beginIndex, endIndex - t);StoogeSortMethod(arrayData, beginIndex + t, endIndex);StoogeSortMethod(arrayData, beginIndex, endIndex - t);} else if (arrayData[beginIndex] > arrayData[endIndex]) {arrayData[beginIndex] = arrayData[beginIndex] + arrayData[endIndex];arrayData[endIndex] = arrayData[beginIndex] - arrayData[endIndex];arrayData[beginIndex] = arrayData[beginIndex] - arrayData[endIndex];}}
}
参考
.html
/%E8%87%AD%E7%9A%AE%E5%8C%A0%E6%8E%92%E5%BA%8F
转载于:.html
更多推荐
Hark的数据结构与算法练习之臭皮匠排序
发布评论