欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java穩(wěn)定排序和不穩(wěn)定排序

排序是計(jì)算機(jī)科學(xué)中的重要概念之一,而在排序算法中,穩(wěn)定排序和不穩(wěn)定排序是兩種常見的分類方式。Java中也有多種排序算法,其中包括了穩(wěn)定排序和不穩(wěn)定排序。

穩(wěn)定排序是指,如果有兩個(gè)元素a和b,它們?cè)谠瓟?shù)組中的位置為 i 和 j (i< j),并且排序后,a元素在b元素前面,那么在排序后的數(shù)組中,a元素依然會(huì)在b元素前面。也就是說,穩(wěn)定排序會(huì)保持相等元素的相對(duì)位置不變。

// Java使用歸并排序(Merge Sort)作為穩(wěn)定排序算法,示例代碼如下:
public static void mergeSort(int[] arr, int low, int high) {
if (low< high) {
int mid = (low + high) / 2;
mergeSort(arr, low, mid);
mergeSort(arr, mid + 1, high);
merge(arr, low, mid, high);
}
}
public static void merge(int[] arr, int low, int mid, int high) {
int[] temp = new int[high - low + 1];
int i = low, j = mid + 1, k = 0;
while (i<= mid && j<= high) {
if (arr[i]< arr[j]) {
temp[k++] = arr[i++];
} else {
temp[k++] = arr[j++];
}
}
while (i<= mid) {
temp[k++] = arr[i++];  
}
while (j<= high) {
temp[k++] = arr[j++];
}
for (int x = 0; x< temp.length; x++) {
arr[x + low] = temp[x];
}
}

不穩(wěn)定排序則是指,相等元素的順序會(huì)在排序后發(fā)生變化,即會(huì)出現(xiàn)原本前后順序相同的元素,排序后會(huì)出現(xiàn)互相顛倒的情況。

// Java使用快速排序(Quick Sort)作為不穩(wěn)定排序算法,示例代碼如下:
public static void quickSort(int[] arr, int low, int high) {
if (low< high) {
int index = partition(arr, low, high);
quickSort(arr, low, index - 1);
quickSort(arr, index + 1, high);
}
}
public static int partition(int[] arr, int low, int high) {
int pivot = arr[high];
int i = low;
for (int j = low; j< high; j++) {
if (arr[j]< pivot) {
swap(arr, i, j);
i++;
}
}
swap(arr, i, high);
return i;
}
public static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}

在實(shí)際使用中,我們需要根據(jù)具體的需求來選擇使用是穩(wěn)定排序還是不穩(wěn)定排序算法,以此來保證程序最佳性能。