/**
* Created by Sheldon on 2019/9/18.
* Project Name: alstudy.
* Package Name: PACKAGE_NAME.
*/
public class QuickSort {
private static int count;
/**
* 測(cè)試
*
* @param args
*/
public static void main(String[] args) {
int[] num = {6, 2, 7, 3, 8, 9};
System.out.println(arrayToString(num, "未排序"));
QuickSort(num, 0, num.length - 1);
System.out.println(arrayToString(num, "排序"));
System.out.println("數(shù)組個(gè)數(shù):" + num.length);
System.out.println("循環(huán)次數(shù):" + count);
}
/**
* 快速排序
*
* @param num 排序的數(shù)組
* @param left 數(shù)組的前針
* @param right 數(shù)組后針
*/
private static void QuickSort(int[] num, int left, int right) {
//如果left等于right,即數(shù)組只有一個(gè)元素,直接返回
if (left >= right) {
return;
}
//設(shè)置最左邊的元素為基準(zhǔn)值
int key = num[left];
//數(shù)組中比key小的放在左邊,比key大的放在右邊,key值下標(biāo)為i
int i = left;
int j = right;
while (i < j) {
//j向左移,直到遇到比key小的值
while (num[j] >= key && i < j) {
j--;
}
//i向右移,直到遇到比key大的值
while (num[i] <= key && i < j) {
i++;
}
//i和j指向的元素交換
if (i < j) {
int temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
num[left] = num[i];
num[i] = key;
count++;
System.out.println(arrayToString(num, "排序次數(shù)" + count));
QuickSort(num, left, i - 1);
QuickSort(num, i + 1, right);
}
/**
* 將一個(gè)int類型數(shù)組轉(zhuǎn)化為字符串
*
* @param arr
* @param flag
* @return
*/
private static String arrayToString(int[] arr, String flag) {
String str = "數(shù)組為(" + flag + "):";
for (int a : arr) {
str += a + "\t";
}
return str;
}
}
Java 快排
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- Java基礎(chǔ)算法:堆排,快排,二分查找 1. 堆排 滿二叉樹:所有葉結(jié)點(diǎn)都有同樣的深度,每個(gè)內(nèi)部結(jié)點(diǎn)都有兩個(gè)兒子 ...
- 一、快速排序是(挖坑法)是挖坑填數(shù) + 分治來實(shí)現(xiàn)。 1.快速排序的基本思想: 2.快速排序的圖示: 3.快速排序的算法
- 前言 Fork/Join框架是Java 7提供的一個(gè)用于并發(fā)執(zhí)行任務(wù)的框架,其主要思想就是把大任務(wù)分割成若干的小任...