數字排序 o n 時間 o 1 空間

2021-08-11 18:32:07 字數 568 閱讀 6808

乙個時間複雜度為o(n),空間複雜度為o(1)的排序演算法 收藏 

乙個時間複雜度為o(n),空間複雜度為o(1)的排序演算法

有n個大小不等的自然數(1--n),請將它們由小到大排序。

要求程式演算法:時間複雜度為o(n),空間複雜度為o(1)。

從這道題出題意圖來看,出題者主要是想考面試者的思維是否敏捷清醒、做事是否認真仔細是否善於思考、基本知識掌握程度如何。為什麼這麼說呢,第一這道題的確不難,就是一般排序。排序的方法在資料結構中講得實在是太多了,各種各樣的選擇排序、插入排序、氣泡排序、希爾排序、堆排序、快速排序等等。但是,用心的人就記得它們當中沒有乙個演算法複雜度是o(n),且不說空間複雜度要滿足o(1)。第二就是這道題真正的考點就是看你能否想到陣列的下標與這n個數存在的關係。這就是考題中的個小玄機。這n個數隨你怎麼亂序,排好序後就是陣列(讓下標從1開始)下標為1的元素,裡面放的就一定是1,下標為n的元素,裡面放的就一定是n。觀察出這點,題目就解決了。

void sort(int e, int n) 

{ int i; 

int t; /*臨時變數:空間複雜度o(1)*/ 

for (i=1; i

數字排序 o n 時間 o 1 空間

乙個時間複雜度為o n 空間複雜度為o 1 的排序演算法 收藏 乙個時間複雜度為o n 空間複雜度為o 1 的排序演算法 有n個大小不等的自然數 1 n 請將它們由小到大排序。要求程式演算法 時間複雜度為o n 空間複雜度為o 1 從這道題出題意圖來看,出題者主要是想考面試者的思維是否敏捷清醒 做事...

並查集(空間O(n),時間O(1))

詳解 下面的 是 hdu1232 include include include include include using namespace std const int maxn 1e9 7 const int normal 1050 結構體的話 把陣列型別一起放到乙個結構體 就行 int pa...

O 1 空間 的歸併排序

2.2 初始化 2.3 迭代 2.4 終止 三 實現 四 效能 歸併排序的主演算法 public void mergesort int t,int low,int high int mid low high 1 mergesort t,low,mid mergesort t,mid,high mer...