QuickSort 快速排序演算法 c語言實現

2021-06-23 00:34:07 字數 967 閱讀 3532

quicksort 快速排序演算法 c語言實現

uicksort 快速排序演算法 c語言實現 

標籤: 快速排序演算法 主元 c語言 氣泡排序 quicksort it

分類: 演算法分析

//

quicksort 快速排序演算法 c實現

這裡說明一下對quicksort的一些看法。

quicksort演算法是乙個分治演算法,能夠改進的地方就是如何對資料的劃分。因為在壞例項即較有序的資料下,它的時間複雜性相當於氣泡排序n^2,這時候的劃分為不對稱劃分。最佳情況時間複雜性為nlogn,這時候的劃分接近對稱劃分。

劃分的關鍵是劃分主元的選取,我上面的程式是選擇第乙個作為主元。這樣可能達到n^2時間。

可以如下改進:

1。 主元選擇 a[low] ,a[high] ,a[middle]中的第二小的資料。其中middle=(low+high)/2取整

2。 採用隨機演算法,隨機選取乙個作為主元。

3。 對排序資料進行隨機排列,使之盡量無序。避免最壞情況發生

//

#include "stdafx.h"

#include

#define max 10

int partition(double a, int low, int high )//劃分

if(i

while(i= a[i])

if(i

}

a[i] = major_compare;

return i;

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

}

int main(int argc, char* argv)

quicksort(a,0,max-1);

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

return 0;

}

快速排序演算法QuickSort

quicksort.cpp 定義控制台應用程式的入口點。快速排序演算法實現 設要排序的陣列是a 0 a n 1 首先任意選取乙個資料 通常選用第乙個資料 作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。然後,對前面部分比它小的數繼續進行快速排序 ...

演算法 快速排序 quick sort

在前面介紹的排序演算法中,最快的排序演算法為歸併排序,但是歸併排序有乙個缺陷就是排序過程中需要o n 的額外空間。本文介紹的快速排序演算法時一種原地排序演算法,所需的額外空間複雜度為o 1 演算法介紹 快速排序其實一種根據需找某個元素的具體位置進行排序的方法。比如所存在如下陣列 選擇第乙個元素5,找...

演算法 快速排序(Quick Sort)

演算法定義 目前學習是五種排序 冒泡 插入 選擇 合併 快速 中,快速排序是最讓我喜歡的演算法 因為我想不到 其定義如下 演算法舉例 5,4,3,2,1 5,4,3,2,1 4,5,3,2,1 1,5,3,2,4 1,4,3,2,5 1,2,3,4,5 演算法實現 1 using system 2u...