氣泡排序 選擇排序 插入排序 希爾排序 快速排序

2021-10-10 21:30:00 字數 3640 閱讀 9521

這張圖映象了,當然也可以看明白,再賦另一張圖

}

// 快速排序;

// 定乙個基準點,一般以左側為基準點,兩個指標(i,j右側),

// 先j-->左,遇到小於基準點停下,再i-->右,遇到大於基準點,交換兩個元素。

// 再次 移動j和i相同操作,直到j==i,這時交換這個點和基準點,

// 這個時候,陣列排序: 左側為 小於基準點,右側大於基準點。

// 遞迴同樣的操作

圖一:

圖二:

這裡寫了兩種實現方式:依次對應圖一和圖二

public

void

insertsoft

(int

nums)}}

system.out.

println

("one->"

+arrays.

tostring

(nums));

// 第二種方法:更新大於的值,最後更新實際得到index下標的值 ---圖二

for(

int i =

1; i < nums.length; i++)}

// 插入完成之後,得到 indexvalue 對應的下標 index;

// 更新值

希爾排序參考連線:

public

void

xesoft

(int

nums)}}

system.out.

println

(arrays.

tostring

(nums));

}

圖一:

// 解法一:對應圖一

private

void

quicksoft

(int

nums,

int start,

int end)

int index = start;

int lastindex = end;

int startvalue = nums[start]

;while

(index < lastindex)

while

(nums[index]

<= startvalue && index < lastindex)

int tem = nums[index]

; nums[index]

= nums[lastindex]

; nums[lastindex]

= tem;

}// 跳出迴圈說明,兩者相等,交換基準和該點

if(start != index)

// 操作左邊

quicksoft

(nums, start, index -1)

;// 操作右邊

quicksoft

(nums, index +

1, end);}

// 開始呼叫:

// quicksoft(nums, 0, nums.length - 1);

圖二:

// 解法二:類似雙指標,減少迴圈

public

void

quicksoftdouble

(int

nums,

int start,

int end)

}// 當迴圈結束時,index 指標 指向了陣列nums在範維index-end中,第乙個不小於startvalue值的 對應下標的值,所以應該操作index-1

// 如果沒有找到小於startvalue的,則index = start + 1,

// 交換 start 和 index-1 的值

int tem = nums[start]

; nums[start]

= nums[index -1]

; nums[index -1]

= tem;

// 遞迴

// 左

quicksoftdouble

(nums, start, index -1-

1);// 右

quicksoftdouble

(nums, index, end);}

// 開始呼叫:

// quicksoftdouble(nums, 0, nums.length - 1);

2.

3.

插入排序 選擇排序 氣泡排序 希爾排序

引入概念 排序穩定性 輸入資料的順序,排序後不能改變。例如,1,2,3,3,5.排序完若第乙個3和第二個3互換,則為不穩定。1.插入排序 穩定 解釋 像打撲克時整理牌時一樣,遇到小牌就插在前面比他大的前面,而後面的牌順次後移 直到處理完最後一張牌。優點 比氣泡排序只能處理相鄰資料更為靈活,適用於資料...

氣泡排序,插入排序,選擇排序,希爾排序

在另外的文章中介紹了快速,堆,歸併排序,這三個排序都是高效的排序,下面介紹一些時間複雜度為o n 2 的排序。氣泡排序,顧名思義,就是將小的元素往上冒,大的元素往下沉,實際在變成的時候用的是大的元素往下沉的方法。每一趟過後,都有乙個最大的元素被沉到底。下一次排序時陣列規模減少了1。主要應用到了相鄰兩...

java 氣泡排序 選擇排序 插入排序 希爾排序

最壞均時間複雜度o n 2 整個陣列都是逆序的情況 最好情況o n 整個陣列都已經是順序的情況 對應version3,version1 2不是 public static void main string arg 小到大 version 2 for int i 0 i i j 小到大 version...