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

java的快速排序和冒泡排序

林玟書1年前7瀏覽0評論

Java 中有許多種排序算法,其中較為常見的是快速排序和冒泡排序。本文將會詳細(xì)介紹這兩種排序算法的原理與實現(xiàn)方法。

快速排序

快速排序是一種基于分治法的排序算法,它的基本思想是通過一趟排序?qū)⒋庞涗浄指舫瑟毩⒌膬刹糠郑渲幸徊糠钟涗浀年P(guān)鍵字都比另一部分記錄的關(guān)鍵字小,然后分別對這兩部分記錄繼續(xù)進(jìn)行排序,以達(dá)成整個序列有序。

public static void quickSort(int arr[], int left, int right) {
int i = left, j = right;
int temp;
int pivot = arr[(left + right) / 2];
while (i <= j) {
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
if (left < j)
quickSort(arr, left, j);
if (i < right)
quickSort(arr, i, right);
}

上面是一個快速排序的函數(shù)實現(xiàn),它使用了遞歸來實現(xiàn)分治的操作。函數(shù)接受三個參數(shù),分別代表待排序數(shù)組、待排序序列的起始下標(biāo)和終止下標(biāo)。算法的時間復(fù)雜度為 O(nlogn)。

冒泡排序

冒泡排序是一種基本的排序算法,它通過按照順序遍歷數(shù)組并多次比較相鄰兩個元素的值來對數(shù)組進(jìn)行排序,每次遍歷過程中,會將當(dāng)前最大的元素沉到數(shù)組底部,然后繼續(xù)進(jìn)行下一輪遍歷。

public static void bubbleSort(int[] arr) {
int temp;
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}

上面是一個冒泡排序的函數(shù)實現(xiàn)。函數(shù)接受一個待排序數(shù)組作為參數(shù)。算法的時間復(fù)雜度為 O(n2)。