数据结构温习 排序算法

js 排序算法

冒泡排序:



1
2
3
4
5
6
7
8
9
10
11
var array = [{"name" : "aa",index : 100},{"name" : "aa",index : 200},{"name" : "aa",index : 300}];  
var len = array.length;
for (var i = 0 ; i < len - 1 ; i++) { //-1 是为了j+1不会发生数组越界,且不会和自己比较
for (var j = 0 ; j < len - i - 1;j++) {
if (array[j] < array[j+1]) {
var temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;//交换位置
}
}
}

快速排序:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var arr = [{"name" : "aa",index : 200},{"name" : "aa",index : 100},{"name" : "aa",index : 300}];  
function qSort(arr,i,j){
if(i>=j) return;
var tempi=i,tempj=j;
var key=arr[i];
while(i<j){
while(i<j&&arr[j].index>key.index) j--;//从右向左找第1个小于key的数
if(i<j) arr[i++]=arr[j];
while(i<j&&arr[i].index<key.index) i++;//从左向右找第1个大于key的数
if(i<j) arr[j--]=arr[i];
}
arr[i]=key;
qSort(arr,tempi,i-1);
qSort(arr,i+1,tempj);
}
qSort(arr,0,2)

 

选择排序:

1
2
3
4
5
6
7
8
9
10
11
12
var min,len = arr.length;  
for (var i = 0 ; i < len - 1 ; i++) {
min = i;
for (var j = i + 1 ; j < len ; j++) {
if (arr[j].index < arr[min].index) {
min = j;
}
}
var temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}

豫ICP备19009686号