QuickSort快速排序原始碼

2021-07-25 14:04:00 字數 924 閱讀 3929

#include "stdafx.h"

templateclass quicksort

static

void innersort(t arr, int start, int end, bool usedesc)

//一般用第乙個作為劃分標準

//也可以從陣列裡隨機乙個作為劃分標準

//甚至用其中兩個的平均或者整個陣列的平均值,但不實用

t b = arr[start];

int l = start;

int r = end;

while(lwhile(l//從右往左,找第乙個比b小的r(公升序排列)

if(l < r)

while(l//從左往右,找第乙個比b大的l(公升序排列)

if(l//將第乙個比b大的arr[l]放到arr[r],r位置變成已劃分好}}

arr[l] = b;

innersort(arr,start, l-1, usedesc);

innersort(arr,l+1,end,usedesc);

}public:

static

void

sort(t arr, int len, bool usedesc=false)

};

#include "stdafx.h"

#include "quicksort.h"

#include

using

namespace

std;

class quicksorttest

; quicksort::sort(arr,10,true);

for(int i=0; i<10; i++)

cout

<}

};

快速排序 QuickSort

快速排序通常用於排序的最佳的使用選擇,其期望執行時間為 o nlgn 能夠進行就地排序。最壞執行時間為 o n 2 演算法描述 分解 divide 陣列 a beg end 被劃分為兩個子陣列 a beg mid 1 和a mid 1 end 使得a beg mid 1 中的資料都小於 a mid ...

快速排序 quicksort

快速排序 quicksort 是分治法的典型例子,它的主要思想是將乙個待排序的陣列以陣列的某乙個元素x為軸,使這個軸的左側元素都比x大,而右側元素都比x小 從大到小排序 然後以這個x在變換後陣列的位置i分為左右兩個子陣列,再分別進行快速排序,直到子陣列中只有乙個元素為止。快速排序演算法如下 void...

快速排序 QuickSort

1,void quicksort int a,int low,int high 這個函式是排序的遞迴部分,mid就是已經確定的基準元素的位置。2,int partition int a,int low,int high 這個函式幹了兩件事 1 挑出來乙個基準元素 這裡選的是最後乙個作為基準 找它的正...