資料結構 排序

2021-07-05 02:26:10 字數 771 閱讀 1847

郝斌版《資料結構》學習筆記

冒泡(公升序,12比,大放後面,再23比,...,直至最大的在最後面)    

插入(2,3,4,依次插入值,保證插入值後的序列為有序的)    

選擇(後面所有的最小值依次排到最前)    

快速排序    

歸併排序(22排,44排,88排...)

排序演算法標準:時間,空間,穩定性

排序和查詢的關係:

排序是查詢的前提,排序是重點

快速排序(快排,分成兩半,遞迴):

# include

void quicksort(int *, int, int);

int findpos(int * a, int low, int high);

int main(void)

;int i;

quicksort(a, 0, 5); //第二個引數表示第乙個元素的下標,第三個引數表示最後元素的下標

for (i=0; i<6; ++i)

printf("%d ", a[i]);

printf("\n");

return 0;

}void quicksort(int * a, int low, int high)

}int findpos(int * a, int low, int high)

a[low] = val;

return high; //或return low, 但不能改為val或者a[low],a[high],是返回位置,而不是元素的值。

}

資料結構 排序

小小總結了下 希望別不記得 排序型別 排序方法 平均時間 最壞時間 最好時間 穩定空間 插入直接插入 o n2 o n2 o n 穩定o 1 希爾排序 o n3 2 增量序列最後為1,只有公因子1 不穩o 1 選擇簡單選擇 o n2 o n2 o n 穩定o 1 堆排序o n lb n o n lb...

資料結構 排序

1.希爾排序 shellsort 增量序列d n為要排序數的個數 void shellinsertsort int a,int n,int dk n個要排序的數,dk是增量 2 堆排序 已知h s m 除了h s 外均滿足堆的定義 調整h s 使其成為大頂堆.即將對第s個結點為根的子樹篩選,para...

資料結構 排序

1 對n個數字進行排序,期中兩兩不同的數字的個數為k,n遠遠大於k,而n的取值區間長度超過了記憶體的大小,時間複雜度最小可以是?兩兩不同的數字的個數為k,因為不知道確定的數字範圍,桶排序不適合,又因為 n遠遠大於k,本題使用hash表來統計,首先獲得k個數及其每個數出現的次數,然後對k個數進行排序,...