排序算法就是用來(lái)將數(shù)組中的元素進(jìn)行有序的排序的方法,選擇排序和冒泡排序很相似下面將展示兩種算法的工作原理和應(yīng)用例子碉克。
一菩彬、選擇排序
選擇排序是一種簡(jiǎn)單直觀的排序算法,它的工作原理就是將首位置的元素依次和后面的所有元素進(jìn)行對(duì)比沼溜,并將元素按照需要將元素的位置對(duì)調(diào)平挑,依次類推就會(huì)將所有的元素從小到大(或者從大到小)排列系草。
代碼如下:
int[] arr = {5, 2, 3, 6, 1};
for (int i = 0; i < arr.length - 1; i++) {
//i數(shù)組中每一個(gè)元素
for (int j = i + 1; j < arr.length; j++) {
//j是i的后一位
if (arr[i] > arr[j]) {
//如果第i個(gè)數(shù)大于第j個(gè)數(shù)就交換位置
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for (int i : arr) {
System.out.println(i);
}
如上所示用數(shù)組中的首元素依次和其之后的元素進(jìn)行對(duì)比通熄,將較大的元素放在較小的元素后面最后將得到一組從小到大的數(shù)。輸出結(jié)果如下:
二找都、冒泡排序
冒泡排序與選擇排序很相似唇辨,冒泡排序需要循環(huán)遍歷需要排序的數(shù)列,每次將兩個(gè)相鄰的數(shù)字進(jìn)行比較能耻,并將順序錯(cuò)誤的元素進(jìn)行交換赏枚,這個(gè)狀態(tài)將持續(xù)進(jìn)行,直到?jīng)]有需要交換的元素為止晓猛。
代碼如下:
// 冒泡排序 第一個(gè)元素依次和其相鄰的一個(gè)元素進(jìn)行對(duì)比
int[] arr1 = {1, 2, 3, 8, 7};
for (int w = 0; w < arr1.length - 1; w++) {
for (int e = 0; e < arr1.length - 1 - w; e++) {
if (arr1[e] < arr1[e + 1]) {
int temp = arr1[e + 1];
arr1[e + 1] = arr1[e];
arr1[e] = temp;
}
}
}
for (int w : arr1) {
System.err.print(w);
}
如上代碼所示饿幅,數(shù)組中的元素與其相鄰的元素進(jìn)行比較,較大的元素漸漸地浮到數(shù)列的頂端戒职,形成了一組從大到小的數(shù)列栗恩。
輸出結(jié)果如下:
小結(jié)
冒泡排序和選擇排序是排序算法中比較簡(jiǎn)單和容易實(shí)現(xiàn)的算法。冒泡排序的思想為:每一次排序過(guò)程帕涌,通過(guò)相鄰元素的交換摄凡,將當(dāng)前沒(méi)有排好序中的最大(行铡)移到數(shù)組的最右(左)端。
選擇排序的平均時(shí)間復(fù)雜度比冒泡排序稍高亲澡,并且選擇排序是一個(gè)不穩(wěn)定的排序算法钦扭。