演算法 快速排序(Quick Sort)

2021-09-06 12:59:57 字數 1210 閱讀 5106

演算法定義

目前學習是五種排序(冒泡、插入、選擇、合併、快速)中,快速排序是最讓我喜歡的演算法(因為我想不到),其定義如下:

演算法舉例

【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;

2using

system.collections.generic;

3using

system.linq;

4using

system.text;

5using

system.threading.tasks;67

namespace

datastucturestudy.sorts822

}2324public

static

void

sort(t items)

2530

31 sort(items, 0, items.length - 1

);32}33

34private

static

void sort(t items, int left, int

right)

3540

41var pivotindex =_random.next(left, right);

42var newpivotindex =partition(items, left, right, pivotindex);

4344 sort(items, left, pivotindex - 1

);45 sort(items, pivotindex + 1

, right);46}

4748

private

static

object partition(t items, int left, int right, int

pivotindex)

4962}63

64return

newpivotvalue;65}

66}67 }

快速排序演算法QuickSort

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

演算法 快速排序 quick sort

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

排序演算法 快速排序(QuickSort)

快速排序演算法又稱劃分交換排序 partition exchange sort 最早由東尼 霍爾 c.a.r.hoare 圖靈獎得主於1960年提出的。常見的排序演算法大概七八種,其中快速排序是使用很廣泛 速度也較快的一種演算法,其名 快速 就能看出它的特點。快速排序採用了 分治法 策略,把乙個序列...