(1)冒泡排序 原理是數(shù)組中兩兩元素進(jìn)行比較,如果第一個(gè)比第二個(gè)大,交換值,再讓第二個(gè)跟第三個(gè)比較,以此類推,第一輪結(jié)束后,最大值排到了最后,再進(jìn)行第二輪比較,第二個(gè)大值排到倒數(shù)第二個(gè)位置上
代碼如下:
var arr =[33,22,29,12,59];//創(chuàng)建一個(gè)新數(shù)組
function bubbleSort(arr){
? ? ? for(var i = 0;i<arr.length-1;1++){//外層循環(huán)控制比較幾輪
? ? ? ? ? for(var j = 0;j<arr.length-1-i;j++){//內(nèi)層循環(huán)控制每輪比較幾個(gè)元素
? ? ? ? ? ? ? ? ? if(arr[j]>arr[j+1]){
//判斷每一次比較的時(shí)候,兩個(gè)數(shù)字的大小。
//arr[j]是第j個(gè)元素// arr[j+1]是第j+1 個(gè)元素
//如果j > j + 1, 把j 和j+i交換,也就是把相對大的值往后排序 也就是從小到大排序
//如果j < j + 1, 把相對小的值往后排 也就是從大到小排序
? ? ? ? ? ? ? ? ? ? ? ? var temp = arr[j];
? ? ? ? ? ? ? ? ? ? ? ? arr[j] = arr[j+1];
? ? ? ? ? ? ? ? ? ? ? ? arr[j+1]=temp;
? ? ? ? ? ? }
? ? ? ? }
? }
return arr;
}
console.log(bubbleSort(arr));
//輸出結(jié)果為:12,22,29,33,59
(2)選擇排序 原理假定第一個(gè)值為最小值,設(shè)一個(gè)變量minIndex指向這個(gè)最小值的索引,讓這個(gè)值和剩余的其他值進(jìn)行比較,如果有比這個(gè)值小的,改變minIndex的值,再讓minIndex指向的值和剩余的值進(jìn)行比較,還有小的,繼續(xù)改變minIndex的值,第一輪結(jié)束后,minIndex指向就是最小值,讓這個(gè)最小值和第一個(gè)值交換位置
function selectSort(arr){
? ? ? for(var i = 0;i<arr.length-1;i++){
? ? ? ? ? var minIndex = i;
? ? ? ? ? ? for(var j=i+1;j<arr.length;j++){
? ? ? ? ? ? ? if(arr[minIndex]>arr[j]){//尋找最小值
? ? ? ? ? ? ? ? ? ? minIndex = j;//保存最小值索引
? ? ? ? ? ? ? }
? ? ? ? }
? ? ? var temp = arr[i];
? ? arr[i] = arr[minIndex];
? ? arr[minIndex] = temp;
}
? return arr;
}
console.log(selectSort(arr));