快速排序法

2021-08-18 20:51:14 字數 1443 閱讀 2969

題目

思想

**實現

測試結果

寫乙個快速排序法,

將 int data[100] = ;進行排序;

在這組待排序的序列中,隨機選擇乙個數,將其餘數字與該數進行比較,將小於它的數放在該數的前面,將大於該數的數字放在它的後面,然後, 遞迴前面的步驟,即可將無序的序列排好;快速排序法雖然總體的平均效率是最好的,但是並非任何場景都適合,比如,待排序的序列本來就是有序的,這種情況下,時間複雜度為 o(n^2);

#include

using namespace std;

void swap(int* x,int* y)

int partition(int data,int

length ,int start ,int end)

//index在本區間內,隨機選定乙個數字均可,本人為了避免使用隨機數,故而直接設定為中間元素

intindex =( start + end )/2;

swap( &data[index], &data[end] );

int small = start -1;

for(index = start ;index

index )

}++ small;

swap(&data[small], &data[end] );

return small;

}void quicksort(int data,int

length ,int start, int end)

if(start == end )

intindex = partition(data,length,start,end);

if(index >start )

if(index

< end )

}//***********************************測試*************************************====

void test()

; int

length = sizeof(data)/sizeof(data[0]);

int start = 0;

int end = length - 1 ;

printf("總共需要對%d個數字進行排序\n",length);

快速排序法

一 快速排序演算法的基本特性 時間複雜度 o n lgn 最壞 o n 2 空間複雜度 o n lgn 不穩定。快速排序是一種排序演算法,對包含n個數的輸入陣列,平均時間為o nlgn 最壞情況是o n 2 通常是用於排序的最佳選擇。因為,基於比較的排序,最快也只能達到o nlgn c void q...

快速排序法

include stdafx.h include vos.h define table mid machine name midmachine define table midmach colname id id define table midmach colname ip ip define t...

快速排序法

快速排序法思想 在待排序的n個資料中取第乙個數字為基準數,陣列最前面放乙個標桿,陣列最後麵放乙個標桿,通過基準數和標桿 i,j 出的數進行比較,實現每次排序完時候,共三組數,不大於基準數 基準數 不小於基準數 舉例說明 5 i 4,6,8,3,9,2 j 基準數5 標桿 i 指向5位置,標桿 j 指...