郝斌版《資料結構》學習筆記
冒泡(公升序,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個數進行排序,...