對順序表的排序其實就是對結構體中的關鍵字的排序。
c語言版:
1、自定義交換函式,然後用常用的交換排序的方法進行排序就行了。這裡用快速排序排序實現:
2、 當然c語言中也內建了排序演算法qsort,位於stdlib.h標頭檔案中,核心是用快排實現的。c++版:
由於c++是包括了c語言,所以上面的快排,在c++中依然能執行通過。
這裡,我來介紹一下c++中更好地辦法去排序。
1、使用過載運算子,達到給結構體新的比較方法,來實現排序的目的。說白了就是建立結構體,定義兩個結構體比較的時候,是按哪個字段比較。直接上**:
注意:c++中可以不帶typedef 來給結構體"披外套.
struct node
};
經過上面的定義後,接著寫
node a, b; 並給字段賦過值後,再比較a這樣的話,上面的快速排序的**,就不用特意指定按age排序了。結構體可以直接賦值,這裡就不用過載=號了。
交換**和上面的一樣。改寫上面的快速排序**:
void quicksort(elemtype *a, int left, int right)
j++;
}swap(&a[i+1],&a[right]);
int r = i+1;
quicksort(a, left, r-1);
quicksort(a, r+1, right);}}
2、使用sort,同樣c++中也有特有的排序函式,sort,它的內部是很多高效率的排序演算法的整合,根據待排序的資料量選擇不同的排序方法,是時間最優。
該函式位於標頭檔案#include
中。
單鏈表不適合快速排序,雙向鍊錶才適合快速排序,這裡我們用選擇排序法排序單鏈表,用快速排序法,排序雙向鍊錶:
下面畫圖來解釋:
實際**:
inline void swap(linknode *p, linknode *q)
鍊錶 排序鍊錶
樂扣原題 definition for singly linked list.public class listnode class solution 將鍊錶轉化為陣列 listlist new arraylist while null head 陣列遞增排序 collections.sort li...
鍊錶的排序
include stdio.h include malloc.h define len sizeof struct node typedef int datatype typedef struct node dlnode typedef dlnode dlist dlist create dlist...
鍊錶的排序
今天自己將職工管理系統用鍊錶的形式又重新寫了一遍,增刪改查的功都能實現,但是在對職工薪資進行排序的時候則遇到了問題,第一次碰到在煉表裡進行排序,想了很久也沒想出合適的方法,之後看了之前所用過的氣泡排序,發現完全可以用類似的方法來對薪資進行排序,下面則是鍊錶排序的具體 p temp7,max,n,m ...