Java(面試) 面試?別再問我睡眠排序了!

2021-09-22 02:39:15 字數 1254 閱讀 8047

博主今天跟大家聊一聊睡眠排序,皮一下很開心!

沒聽過睡眠排序?不要覺得丟臉,我也是剛知道的!
說起排序,大家肯定只知道快排,氣泡排序等!然而今天看到一種睡眠排序,簡直是顛覆三觀,毀天滅地,確實是達到排序的目的了!而且思路清奇,著實可以拿出來分享分享!假設,入參是乙個亂序的陣列!那如何進行排序輸出呢?步驟如下:

接下來上**,輸入陣列為int arr= ,**如下圖所示

package com;

public class sleeptest;

// 建立指定長度的執行緒陣列

sortthread sortthreads=new sortthread[arr.length];

// 指定每個執行緒陣列的值

for (int i = 0; i < sortthreads.length; i++)

// 開啟每乙個執行緒

for (int i = 0; i < sortthreads.length; i++)

}}class sortthread extends thread

@override

public void run() catch (interruptedexception e)

super.run();

// 輸出該數字

system.out.println(n); }

}

輸出的結果:

但是注意了,因為在本例中,1ms和2ms距離太接近了,可能出現如下輸出:

這個問題好解決,只要沉睡時間,以傳入整數*1000ms進行沉睡即可。

這個時候,就會有人又問了,如果要排序的陣列有負數怎麼辦?難道你要

thread.sleep(負數)
哈哈這裡,顯然是會報異常的!這種情況,只能將入參加上一定的偏移量,轉換為正數進行處理!

拜託,面試別再問我跳表了!

跳表是乙個隨機化的資料結構,實質就是一種可以進行二分查詢的有序鍊錶。跳表在原有的有序鍊錶上面增加了多級索引,通過索引來實現快速查詢。跳表不僅能提高搜尋效能,同時也可以提高插入和刪除操作的效能。考慮乙個有序鍊錶,我們要查詢3 7 17這幾個元素,我們只能從頭開始遍歷鍊錶,直到查詢到元素為止。上述這個鍊...

拜託,面試別再問我TopK了!!!

除非校招,我在面試過程中從不問topk這個問題,預設大家都知道。將n個數排序之後,取出最大的k個 即為所得。sort arr,1,n return arr 1,k o n lg n 明明只需要topk,卻將全域性都排序了,這也是這個方法複雜度非常高的原因。那能不能不全域性排序,而只區域性排序呢?這就...

拜託,面試別再問我計數排序了!!!

radix sort 還有計數排序 counting sort 今天,1分鐘,通過幾幅圖,爭取讓大家搞懂計數排序。空間大小為o max min 用來儲存所有元素出現次數 計數 掃瞄待排序資料 arr n 使用計數陣列 counting max min 對每乙個 arr n 現的元素進行計數 掃瞄計數...