色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java快排和堆排序

Java是一種廣泛使用的計(jì)算機(jī)編程語言,它提供了很多種排序算法,其中快排和堆排序是兩個(gè)最常用的排序算法。

快排是一種基于分治思想的高效排序算法,其核心思想是通過隨機(jī)選取一個(gè)基準(zhǔn)值,將數(shù)組分為兩個(gè)子數(shù)組。其中一個(gè)子數(shù)組中所有元素均小于基準(zhǔn)值,另一個(gè)子數(shù)組中所有元素均大于基準(zhǔn)值。遞歸地對(duì)子數(shù)組進(jìn)行排序,最終達(dá)到整個(gè)數(shù)組有序的目的。以下是Java實(shí)現(xiàn)快排的代碼:

public static void quickSort(int[] arr, int left, int right) {
int i, j, temp, pivot;
if (left< right) {
i = left;
j = right;
pivot = arr[left];
while (i< j) {
while (i< j && arr[j] >= pivot)
j--;
if (i< j) {
arr[i] = arr[j];
i++;
}
while (i< j && arr[i]< pivot)
i++;
if (i< j) {
arr[j] = arr[i];
j--;
}
}
arr[i] = pivot;
quickSort(arr, left, i - 1);//遞歸調(diào)用
quickSort(arr, i + 1, right);//遞歸調(diào)用
}
}

堆排序是一種基于二叉樹的排序算法,它通過維護(hù)一個(gè)堆來實(shí)現(xiàn)。堆是一種特殊的樹結(jié)構(gòu),滿足所有父節(jié)點(diǎn)都大于或小于其子節(jié)點(diǎn)的條件。堆排序的基本思想是先將待排序的序列構(gòu)建成一個(gè)大根堆或小根堆,然后將堆頂元素與堆底元素交換位置,最后再對(duì)堆進(jìn)行調(diào)整,使得剩余元素仍然滿足堆的性質(zhì)。以下是Java實(shí)現(xiàn)堆排序的代碼:

public static void heapSort(int[] arr) {
int n = arr.length;
for (int i = n / 2 - 1; i >= 0; i--)
heapify(arr, n, i);
for (int i = n - 1; i >= 0; i--) {
int temp = arr[0];
arr[0] = arr[i];
arr[i] = temp;
heapify(arr, i, 0);
}
}
public static void heapify(int[] arr, int n, int i) {
int largest = i;
int l = 2 * i + 1;
int r = 2 * i + 2;
if (l< n && arr[l] >arr[largest])
largest = l;
if (r< n && arr[r] >arr[largest])
largest = r;
if (largest != i) {
int swap = arr[i];
arr[i] = arr[largest];
arr[largest] = swap;
heapify(arr, n, largest);
}
}