java排序演算法 快速排序

2021-09-13 19:11:57 字數 849 閱讀 4134

陣列:[2,6,3,6,5,9,1]

輸出:[1 2 3 5 6 6 9 ]

private static void paixu(int arrs, int h, int e) 

while (arrs[x]< arrs[e])

//交換值

int m;

m = arrs[h];

arrs[h] = arrs[e];

arrs[e] = m; //2,6,3,6,5,9,1

h++; //2,1,3,6,5,9,6

e--; //2,1,3,5,6,9,6

}//遞迴查詢左右兩邊

if (head < e)

if (end > h)

}

為什麼會有h++,e--呢

跟一下**

輸入陣列[2,6,3,6,5,9,1]

第一次執行

中間位置是3,值是6

左邊是0,右邊是6

往下執行

陣列變成[2,1,3,6,5,9,6]

執行加減操作 h=2,e=5;然後開啟第二輪的執行

假如不進行加減操作,

繼續執行的話,左邊繼續判斷,當查詢到6的時候停止,

右邊查詢,查詢到6的時候停止,然後交換,6和6交換,然後再次開啟迴圈,就會死迴圈,

當執行加減操作之後,再次判斷的時候,就會從交換資料之後的索引開始判斷,就不會再次判斷了,

Java排序演算法 快速排序

一.思想 對氣泡排序演算法的一種改進。通過一趟排序將排序的資料分割成兩個部分,其中一部分的所有資料都比另一部分的所有資料都要小,然後再按此方法對這兩部分分別再進行快速排序,依次類推。實現為 開始時先設兩個變數i start,j end 以第乙個元素作為中間點,pivot num i 以j 的形式從後...

java快速排序演算法

package com.head.swift 快速排序 public class main sorts a,0,a.length 1 對陣列a進行公升序排列 輸出陣列 for int i a public static void sorts int a int left int right if i...

演算法 快速排序(Java)

三 快速排序 實現和效率 首先,在這一串數字中挑乙個基準數,作為排序的參考,將大於該基準數的數字放在後面,小於基準數的數字放在前面。然後,這樣一來,一串數字分成了兩部分,左部分都比基準數小,右部分都比基準數大。接著,同樣的方法,再分別從左右部分都挑出乙個基準數,同樣作為排序的參考,同樣將大於該基準數...