單鏈表的排序

2021-03-31 08:57:00 字數 615 閱讀 3803

這是前幾天hottey面試的乙個題目:不借助外部陣列,只對鍊錶本身進行操作來完成排序。我覺得甚有意思,便實現了乙個。程式**如下:

#include

using namespace std;

template

struct node // 節點結構;

template

class slist // 單鏈表結構

~slist()

void clear() // 清空鍊錶

}void push_back(t t) // 為簡化程式,只提供push_back介面完成元素插入

void print() // 為簡化程式,不提供對operator《的過載,直接使用成員函式輸出

void qksort(node*begin, node*end) // 快排

}qksort(begin, q); // 哨兵前的快排

qksort(q->next, end); // 哨兵後的快排

}void sort() // 呼叫快排完成排序

private:

nodehead;};

int main()

後記:由此亦能看出stl中為list單列乙個sort演算法的緣由。

單鏈表之排序單鏈表

package list public class sortedsinglylist extends singlylist 將values陣列中的所有物件按值大小插入 public sortedsinglylist t values 過載深拷貝,由單鏈表構建排序單鏈表 public sortedsi...

單鏈表的排序

歸併排序的一種比較快的排序,尤其在鍊錶中,在所有排序中是時間複雜度為nlog n 級別的有三種,分別為快速排序,堆排序和歸併排序,但是快速排序在單鏈表中沒有優勢 適合於雙向鍊錶 同樣堆排序在建堆和調整堆得過程對於單鏈表也是比較麻煩,這裡我們選取了歸併排序。歸併排序的概念和原理我就不介紹了,網上的相關...

單鏈表的排序

單鏈表結點資料結構 typedef struct node node t,list t 1移動結點上的值 1.1 選擇排序 時間複雜度為 o n 2 void list select sort list t h s key p key p key min return 1.2 快速排序 時間複雜度為...