一、冒泡排序:
function bubbleSort(arr) {
var len=arr.length;
for(var outer=0;outer<len-1;outer++)
for(var inner=0;inner<len-outer+1;inner++){
if(arr[inner]>arr[inner+1]){ //比較相鄰元素
let temp=arr[inner+1];
arr[inner+1]=arr[inner];
arr[inner]=temp;
}
}
return arr;
}
二、選擇排序:
function selectionSort(arr) {
var len=arr.length;
var temp;
for(var i=0;i<len-1;i++){
var strmin=i;
for(var j=i+1;j<len;j++){
if(arr[j]<arr[strmin]){ //找到剩餘元素的最小值
strmin=j;
}
}
temp=arr[i];
arr[i]=arr[strmin];
arr[strmin]=temp; //將最小值歸位
}
return arr;
}
三、插入排序
第一趟 對下標 1 處的元素進行排序,保證數組[0,1]上的元素有序;
第二趟 對下標 2 處的元素進行排序,保證數組[0,2]上的元素有序;
.....
.....
第N-1趟對下標 N-1 處的元素進行排序,保證數組[0,N-1]上的元素有序,也就是整個數組有序了。
它的遞歸思想就體現在:當對位置 i 處的元素進行排序時,[0,i-1]上的元素一定是已經有序的了。
function insertSort(arr) {
var len=arr.length;
for (var i = 1; i < len; i++) {
temp=arr[i];
// for (var j = i;j>=0; j--) {
// if(arr[i-1]>arr[i]){
// arr[i]=arr[i-1];
// }else{
// break;
// }
// }
var j=i;
while(j>=0 && arr[j-1]>=temp){ //找到外循環元素合適的位置
arr[j]=arr[j-1]; //將內循環中的元素右移
j--;
}
arr[j]=temp; //將外循環元素歸爲
}
return arr;
}