內部排序之 快速排序

2021-08-11 15:01:57 字數 716 閱讀 5727

本文整理我對快速排序的學習與理解。

時間複雜度好的情況下o(n*logn)最壞的情況下o(n*n)

對於一組序列 a = ;

1、選擇第乙個元素作為分界值temp,比temp大的數往右移,比temp小的數往左移,分為兩類

2、把temp移到中間,其左右兩個區間看做新的待排序的序列,重複第1步。

這是乙個遞迴過程,直到區間長度為1,return;

【**1(遞迴法)】:

#includeusing namespace std;

void qsort(int *a,int low,int high)//[low,high]閉區間

lnode,*linklist;

//帶有頭結點的單鏈表快速排序演算法

void lqsort(linklist h,linklist end)else

} lqsort(h,h->next);

lqsort(h->next,end);

}int main()

for(linklist p=head->next;p!=null;p=p->next)

printf("\n\n");

lqsort(head,null); //排序

for(linklist p=head->next;p!=null;p=p->next)

printf("\n\n");

}

詳談內部排序之快速排序

交換排序 兩兩比較待排序記錄的關鍵碼,如果發生逆序 即排列順序與排序後的次序正好相反 則交換之,直到所有記錄都排好序為止 交換排序的主要演算法有 1 氣泡排序 2 快速排序 快速排序基本思想 1 基本思想 通過一趟排序將待排序列以樞軸為標準劃分成兩部分,使其中一部分記錄的關鍵字均比另一部分小,再分別...

內部排序 交換類排序 快速排序

在氣泡排序中,由於掃瞄過程中只對相鄰的兩個元素進行比較,因此在互換兩個相鄰元素時只能消除乙個逆序,如果能通過兩個 不相鄰的 元素的交換,消除待排序記錄中的多個逆序則會大大加快排序的速度。快速排序方法中的一次交換可以消除多個逆序。演算法思想 從待排序記錄序列中選取乙個記錄 通常選取第乙個記錄 為樞軸,...

內部排序之堆排序

堆排序 heap sort 只需要乙個記錄大小的輔助空間,每個待排序的記錄僅占有乙個儲存空間。1 基本概念 a 堆 設有n個元素的序列 對所有的i 1,2,int n 2 當滿足下面關係 ki k2i,ki k2i 1 或 ki k2i,ki k2i 1 這樣的序列稱為堆。堆的兩種型別 根結點最小的...