基本排序演算法

2021-10-25 01:57:45 字數 1961 閱讀 9143

如果遇到相等的值不進行交換,那這種排序方式是穩定的排序方式

比較兩個相鄰的元素,將值大的元素交換到右邊

public

static

void

sort1

(int

arr)}}

system.out.

println

(arr.length)

;for

(int i =

0; i < arr.length; i++

)}

從頭至尾掃瞄序列,找出最小的乙個元素,和第乙個元素交換,接著從剩下的元素中繼續這種選擇和交換方式,最終得到乙個有序序列

public

static

void

sort2

(int

arr)}}

for(

int i =

0; i < arr.length; i++

)}

public

static

void

sort3

(int

arr,

int value)

else

if(arr[mid]

mid=

(start+end)/2

;if(start>end)

} system.out.

println

("查詢次數:"

+count+

"位置:"

+mid)

;}

快速排序之所比較快,每次交換是跳躍式的每次排序的時候設定乙個基準點,將小於等於基準點的數全部放到基準點的左邊,將大於等於基準點的數全部放到基準點的右邊

public

static

void

sort4

(int

arr,

int low,

int high)

i=low;

j=high;

//基準位

temp=arr[low]

;while

(i//再左邊往右邊遞增

while

(arr[i]

<=temp&&i//滿足條件則交換

if(i}//i=j,交換基準位

arr[low]

=arr[i]

; arr[i]

=temp;

//遞迴基準位左邊的陣列

sort4

(arr,low,j-1)

;//i遞迴基準位右邊的陣列

sort4

(arr,j+

1,high)

;}

public

class

test

;int

arr1=

;sort1

(arr)

;//冒泡

system.out.

println()

;sort2

(arr)

;//選擇

system.out.

println()

;sort3

(arr1,6)

;//二分查詢

system.out.

println()

;sort4

(arr,

0,arr.length-1)

;//快速排序

for(

int i : arr)

}

堆排序的基本思想是:將待排序序列構造成乙個大頂堆,此時,整個序列的最大值就是堆頂的根節點。將其與末尾元素進行交換,此時末尾就為最大值。然後將剩餘n-1個元素重新構造成乙個堆,這樣會得到n個元素的次小值。如此反覆執行,便能得到乙個有序序列了

基本排序排序演算法

時空複雜度 氣泡排序 時間o n 2 額外空間o 1 插入排序 時間o n 2 額外空間o 1 選擇排序 時間o n 2 額外空間o 1 基數排序 時間o k n k logn max 額外空間o n 臨時儲存 o b 記數,b為基的大小 記數排序 時間o n k 額外空間o k 希爾排序 時間o ...

基本排序排序演算法

時空複雜度 氣泡排序 時間o n 2 額外空間o 1 插入排序 時間o n 2 額外空間o 1 選擇排序 時間o n 2 額外空間o 1 基數排序 時間o k n k logn max 額外空間o n 臨時儲存 o b 記數,b為基的大小 記數排序 時間o n k 額外空間o k 希爾排序 時間o ...

基本排序演算法

將要排序的物件分作兩部份,乙個是已排序的,乙個是未排序的,從後端未排序部份選擇乙個最小值,並放入前端已排序部份的最後乙個,例如 排序前 70 80 31 37 10 1 48 60 33 80 1 80 31 37 10 70 48 60 33 80 選出最小值1 1 10 31 37 80 70 ...