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

java選擇排序和冒泡排序的區別

榮姿康1年前7瀏覽0評論

Java選擇排序和冒泡排序都是常見的排序算法,它們的目的都是將一組無序的數據進行排序。但是它們的實現方法和時間復雜度卻不相同,下面將會詳細介紹它們的區別。

選擇排序

public static void selectSort(int[] arr) {
int len = arr.length;
for (int i = 0; i< len - 1; i++) {
int minIndex = i;
for (int j = i + 1; j< len; j++) {
if (arr[j]< arr[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
int tmp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = tmp;
}
}
}

選擇排序的實現方式是:從未排序中選擇最小的一個元素,放在已排序的末尾。算法時間復雜度為O(n^2)。可以看出,每一輪都要取出一個最小的元素進行比較,相對于冒泡排序來說,選擇排序需要進行較少的比較和交換操作。

冒泡排序

public static void bubbleSort(int[] arr) {
int len = arr.length;
for (int i = 0; i< len - 1; i++) {
boolean flag = false;
for (int j = 0; j< len - i - 1; j++) {
if (arr[j] >arr[j + 1]) {
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
flag = true;
}
}
if (!flag) {
break;
}
}
}

冒泡排序的實現方式是:通過相鄰元素的比較和交換,使得最大的元素逐漸沉到末尾。算法時間復雜度同樣為O(n^2)??梢钥闯觯芭菖判蚩偸沁M行相鄰元素的比較和交換,因此一般情況下比選擇排序進行了更多的比較和交換操作。

綜上所述,選擇排序和冒泡排序的區別主要在于實現方式和執行效率。選擇排序需要進行較少的比較和交換操作,而冒泡排序總是進行相鄰元素的比較和交換操作,因此效率相對較低。