看到一些奇异的排序方式,记录下:
一, 珠排序:
在珠排序中,一行表示一个数字。如果一行里有2颗珠子,该行代表数字2;如果一行里有4颗珠子,该行代表数字4。给定一个数组,数组里有多少个数字,就要有多少行;数组里最大的数字是几,就要准备多少根杆子。
第一步,将珠子悬挂在垂直竹竿上
第二步,让珠子掉落
实现需矩阵
二, Bogo排序(又称囧排序-扯淡):
在计算机科学中,Bogo排序(bogo-sort)是个既不实用又原始的排序算法,其原理等同将一堆卡片抛起,落在桌上后检查卡片是否已整齐排列好,若非就再抛一次。其名字源自Quantum bogodynamics,又称bozo sort、blort sort或猴子排序。
Random random = new Random();
public void bogoSort(int[] n) {
while(!inOrder(n))shuffle(n);
}
public void shuffle(int[] n) {
for (int i = 0; i < n.length; i++) {
int swapPosition = random.nextInt(i + 1);
int temp = n[i];
n[i] = n[swapPosition];
n[swapPosition] = temp;
}
}
public boolean inOrder(int[] n) {
for (int i = 0; i < n.length-1; i++) {
if (n[i] > n[i+1]) return false;
}
return true;
}
五雷轰顶。。
PS:
附上一些排序GIF图片:
鸡尾酒排序:
希尔排序:
堆排序(堆排序算法的演示。首先,将元素进行重排,以符合堆的条件。图中排序过程之前简单的绘出了堆树的结构。):
快速排序: