實用的排序演算法

2021-10-05 01:37:58 字數 1730 閱讀 1253

選擇排序的有序化是從第頭開始有序化的。

如:n個元素 (從小向大排序)

第乙個和後面n-1個元素一一比較

如果發現後面元素的比他小 交換他們兩

一輪下去就可以保證第乙個元素是最小的

後面從第二個元素開始往後面比較 重複以上步驟直到倒數第二個數字

public

class

xuanze

;for

(int i =

0; i < a.length; i++)}

}for

(int i =

0; i < a.length; i++)}

}

又名 大數沉底演算法

有序化一般是從末端開始的

相鄰的兩個數比較 如果不符合比較規則的話就交換

public

class

maopao

;int flag=0;

for(

int i =

0; i 1; i++)}

}for

(int aa:a)

}}

以乙個陣列作為示例,取區間第乙個數為基準數。01

2345

6789

7265788

6042

8373

4885

第一次排序下後01

2345

6789

4865742

6072

8373

8885

分治 遞迴的思想

分治:選取乙個中間數值

從前向後比 比中間值小或者等於的放在左邊

從後往前比較 比中間值大的放在右邊

遞迴:這樣這個數列分成了兩個數列 在用遞迴對這兩個數列進行相同的操作 知道數列中只有乙個元素為止 排序完成

package paixu;

public

class

kuaisu

;sort

(a,0

,a.length-1)

;for

(int i:a)

}public

static

void

sort

(int

a,int low,

int high)

int left = low;

int right = high;

//儲存基準值

int pivot = a[left]

;while

(left < right)

// 放置基準值,準備分治遞迴快排

//左邊和右邊相等的時候把中間值給這個位置

if(left==right)

a[left]

= pivot;

//遞迴來

sort

(a, low, left -1)

;//左

sort

(a, left +

1, high)

;//右邊

}}

平均複雜度為nlogn

最好logn

最差 1/2 n^2

實用排序演算法整理 Python

def bubble sort nums n 2 1 n len nums for i in range n for j in range n 2,i 1,1 if nums j nums j 1 nums j nums j 1 nums j 1 nums j return nums def sho...

簡單實用演算法 氣泡排序

變數定義 注 氣泡排序如果能在內部迴圈第一次執行時,使用乙個bool值來表示有無需要交換的可能,也有可能把最好的複雜度降低到o n 在這個情況,在已經排序好的數列就無交換的需要。演算法 c 氣泡排序 public void bubblesort intnums if exchange 本趟排序未發生...

簡單實用演算法 氣泡排序

變數定義 注 氣泡排序如果能在內部迴圈第一次執行時,使用乙個bool值來表示有無需要交換的可能,也有可能把最好的複雜度降低到o n 在這個情況,在已經排序好的數列就無交換的需要。演算法 c 氣泡排序 public void bubblesort intnums if exchange 本趟排序未發生...