js兩種排序:冒泡排序和選擇排序

冒泡排序
//數組中的元素兩兩進行比較,如果第一個數比第二個數大,交換位置,第一輪結束後,最大值排在最後邊
//進行第二輪的兩兩比較,第二大的值也能拍出來
//以此類推

var arr = [2,4,1,6,9,8];//聲明一個無序數組
			function bubbleSort(arr){
				for(var i = 0;i < arr.length-1;i++){//比較的輪數,輪數比次數少一(因爲最後一個不用比)
					for(var j = 0;j < arr.length-i-1;j++){//每次比較的次數
						if(arr[j]>arr[j+1]){//交換較大的值,放到後面
							var temp = arr[j];
							arr[j] = arr[j+1];
							arr[j+1] = temp;
						}
					}
					
				}return arr;
				
			}
			bubbleSort(arr);
			console.log(arr);

//選擇排序
//假設第一個值爲最小值,設一個變量minIndex指向這個最小值對應的索引,然後讓minIndex對應的值和剩餘所有的值進行比較,有比minIndex對應的值小的,改變minIndex的指向,最終確定一個最小值,讓minIndex對應的這個最小值和第一個值交換位置;假設第二個值爲最小值,minIndex指向這個所用,讓第二個值和剩餘所有值進行比較,就可以找到minIndex對應的第二個小值索引,讓第二小的值和第二個值交換位置,以此類推

var arr = [2,4,1,6,9,8,7,3];
			function selectSort(){
				for(var i = 0;i < arr.length-1;i++){//比較的輪數
					var indexMin = i;//假設第一個最小,索引等於i;
					for(var j = i + 1;j < arr.length;j++){//i後面的值
						if(arr[indexMin]>arr[j]){//索引指向最小值
							indexMin = j;
						}
					}
					//把最小值賦值給最前面的值(交換)
					var temp = arr[i];
					arr[i] = arr[indexMin];
					arr[indexMin] = temp;
				}
				return arr;
			}
			selectSort(arr);
			console.log(arr);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章