排序演算法1 快速排序

2022-02-22 18:26:21 字數 1562 閱讀 4502

今兒閒著,實現了下一維陣列快速排序演算法。

快速排序分三個步驟(參考維基百科:

1.選取乙個基準值。(一般以第乙個為基準)

2.重新排序,所有比基準小的都放在左邊,所有比基準大的都放在右邊。排序過後,該基準處於數列中間位置。(分治法中的分,以基準值為中心,分為左右兩個分割槽)

3.遞迴的按照1、2兩步驟排序左右兩個分割槽。

控制台程式如下:

方法1:

1

using

system;

2using

system.collections.generic;

3using

system.linq;

4using

system.text;56

namespace

718 console.writeline("

快速排序");

19 mytest.quicksort(mytest.myarray,0,9

);20

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

2124}25

}2627class

sorttest

2843}44

45///

46///

排序分割

47///

48///

49///

50///

51///

52public

int returnindex(int array,int low,int

high)

5362

if (low 6367

//從左往右

68while (array[low] < xmark && low 6972

if (low 7377

}78 array[low] =xmark;

79return

low;80}

8182

///83

///快速排序

84///

85///

86///

87///

88public

void quicksort(int array, int low, int

high)

8996}97

}98 }

方法2:維基百科中的方法,比第乙個簡潔,看著舒服。

public

static

void sort(int

numbers)

private

static

void sort(int numbers, int left, int

right)

sort(numbers, left, i-1

); sort(numbers, j+1

, right); }}

private

static

void swap(int numbers, int i, int

j)

排序1 快速排序演算法

經典快排思路 1.首先設定乙個分界值,通過該分界值將陣列分為左右兩個部分。2.左邊部分是小於等於分界值的資料,右邊部分是大於分界值的資料。3.左邊和右邊遞迴呼叫方法 設定分界值,劃分左邊的是小於等於分界值的資料,右邊是大於分界值的資料。舉例 4,6,2,0,3 1.選取最右邊的3作為分界值,劃分後陣...

排序演算法 1)快速排序

一 簡介 快速排序是c.r.a.hoare於1962年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其為分治法 divide and conquermethod 時間複雜度為o n logn 不穩定。基本思想是 1 先從數列中取乙個數作為基準數 2 進行分割槽,把把大於基準數的所有數放在它的...

快速排序演算法1

package com.mianshi describe 快速排序演算法1 排序結果從小到大 create on 2011 05 25 author sylor.liu version 1.0 since jdk1.6 public class quicksort1 以a r 為基準值,將該段資料拆...