Yazar | Xiao Hui
Kaynak | Programcı Xiaohui (ID: chengxuyuan xi aohui)
Algoritmalar dünyasında, hızlı sıralama, birleştirme sıralaması, kova sıralama gibi birçok verimli sıralama algoritması vardır ... Çok Programın performansını iyileştirdi.
Bununla birlikte, ne yüksek verimlilik ne de okunabilirlik elde edemeyen bazı garip sıralama algoritmaları vardır. Varoluşlarının anlamı nedir? Çünkü ilginç.
Aşağıda, üç "fısıltı" sıralama algoritmasını sunalım.
Uyku sıralama
----- sonraki gün -----
public static void sleepSort (int dizi) {
for (int num: array) {
yeni Konu(- > {
Deneyin {
Thread.sleep (num);
} catch (InterruptedException e) {
e.printStackTrace;
}
System.out.println (sayı);
}).Başlat;
}
}
public static void main (String args) {
int dizi = {10,30,50,60,100,40, 150 , 200,70};
sleepSort (dizi);
}
(Xiao Hui kodunu Rhubarb'a gösterdi)
Maymun sıralama
Belki bu daha soyuttur, bunu gösterelim:
Boncuk sıralama
Bir abaküs gören biri, ince bir çubuğa asılmış çok sayıda yuvarlak boncuk olduğunu bilir, örneğin:
Abaküsü dik yerleştirirseniz ne olur? Abaküs üzerindeki küçük boncuklar, aşağıdaki gibi yerçekimi etkisiyle abaküsün dibine kayacaktır:
Bu ne anlama geliyor? Ayrıntılandıralım:
Boncuklar düşmeden önce, her sırada kaç tane boncuk vardır? Yukarıdaki şekilde gösterildiği gibi, her sıradaki boncuk sayısı sırasıyla 3, 2, 4, 5, 1'dir ve bu sayı dizisi düzensizdir.
Boncuklar düştüğünde, her sırada kaç tane boncuk vardır? Yukarıdaki şekilde gösterildiği gibi, her sıradaki boncuk sayısı 1, 2, 3, 4, 5 olmuştur. Bu numara sırasıdır!
Öyleyse, düşen boncuk ilkesini simüle edebilir ve bir dizi pozitif tamsayıları sıralayabilir miyiz? Cevap Evet.
Bir abaküsü simüle etmek için iki boyutlu bir dizi kullanabiliriz, boncuklarla konumu 1'e ve boncuksuz konumu 0'a ayarlayabiliriz. Ardından, sırasız bir tamsayı dizisi aşağıdaki iki boyutlu diziye dönüştürülebilir:
Daha sonra, abaküs boncuklarının düşme sürecini simüle ediyoruz, böylece tüm elemanlar 1 iki boyutlu dizinin altına düşer:
Son olarak, düşmüş "abaküsü" tek boyutlu sıralı bir diziye dönüştürün: