arr = [1,5,36,25,47,24,96,34,58];
function Sort(arr){
//冒泡排序,相邻元素比较大小排序
/* for(var i=0;i<arr.length-1;i++){
for(var j=i;j<arr.length-1;j++){
if(arr[j]>arr[j+1]){
var temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}*/
//选择排序,每次寻找最大/小的数并放在数组开始
/*for(var i=0;i<arr.length-1;i++){
var minIndex = i;
for(j=i;j<arr.length-1;j++){
if(arr[minIndex]>arr[j+1]){
minIndex=j+1;
}
}
if(minIndex!=i){
var temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
}*/
//插入排序,依次选取数值插入到已排序的队列中
/* for(var i=1;i<arr.length;i++){
var key=arr[i];
var j = i - 1;
while(arr[j]>key){
arr[j+1] = arr[j];
j--;
}
arr[j+1] = key;
}*/
//希尔排序
/* var len = arr.length,
temp,
gap = 1;
console.time('希尔排序耗时:');
while(gap < len/5) { //动态定义间隔序列
gap =gap*5+1;
}
for (gap; gap > 0; gap = Math.floor(gap/5)) {
for (var i = gap; i < len; i++) {
temp = arr[i];
for (var j = i-gap; j >= 0 && arr[j] > temp; j-=gap) {
arr[j+gap] = arr[j];
}
arr[j+gap] = temp;
}
}
console.timeEnd('希尔排序耗时:');*/
//快速排序,每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。
function quickSort(arr){
if(arr.length <= 1){
return arr;
}
var left = [];
var right = [];
var temp = arr[0];
for(var i = 1; i < arr.length; i++){
if(arr[i] <= temp){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
left.push(temp);
left = arguments.callee(left);
right = arguments.callee(right);
return left.concat(right);
}
//一句话写快速排序
function quickSort(a) {
return a.length <= 1 ? a : quickSort(a.slice(1).filter(item => item <=a[0])).concat(a[0] , quickSort(a.slice(1).filter(item =>item>a[0])));
}
return arr;
}
console.log(Sort(arr));
console