1、选择排序
每一趟从待排序的记录中选出最小的元素,顺序放到已排好序的序列的最后,直到全部序列排序完毕。
<script type="text/javascript">
function selectionSort(arr){
for(var i = 0; i < arr.length-1; i++){
var k = i;
for(var j = i+1;j < arr.length;j++){
if(arr[j]<arr[k]){
k=j;
}
}
if(k != i){
var temp = arr[k];
arr[k] = arr[i];
arr[i] = temp;
}
}
return arr;
}
var array = [10,14,11,5,8,24,45,99];
document.write("当前数组是:"+'<br>'+array+'<br>');
document.write("排序后的数组是:"+'<br>'+selectionSort(array));
</script>
2、快速排序
先从数列中取出一个数作为基准数,分区过程中将比这个数大的全部放到它的右边,小于或等于它的数全部放到它的左边,再对左右区间重复上述步骤,直到各个区间都只有一个数。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
function quickSort(array){
var middle = Math.floor(array.length/2);
middleNum = array[middle];
var small = [],
big = [];
if(array.length <= 2){
return array;
}
for(var i = 0; i < array.length; i++){
if(i == middle){
continue;
}
array[i] > middleNum ? (big[big.length] = array[i]) : (small[small.length] = array[i]);
}
small[small.length] = middleNum;
return quickSort(small).concat(quickSort(big));
}
var arr = [10,14,11,5,8,45,24,99];
document.write("当前数组是:"+'<br>'+arr+'<br>');
document.write("排序后的数组是:"+'<br>'+quickSort(arr));
</script>
</body>
</html>
3、二分插入排序
二分插入排序也称折半插入排序,基本思想是:设数列[0….n]分为两部分一部分是[0…i]为有序序列,另一部分是[i+1…..n]为无序序列,从无序序列中取一个数 x ,利用二分查找算法找到 x 在有序序列中的插入位置并插入,有序序列还是有序的,接下来重复上述步骤,直到无序序列全部插入有序序列 ,这是整个序列只剩下有序序列,即有序了。
<script type="text/javascript">
function sort(array){
for(var i = 1; i < array.length; i++){
var temp = array[i];
var left = 0,
right = i - 1;
while(left <= right ){
var mid = Math.floor((left+right)/2);
if(temp > array[mid]){
left = mid + 1;
}else {
right = mid - 1 ;
}
}
for(j = i - 1 ; j >= left; j--){
array[j+1] = array[j];
}
array[left] = temp;
}
return array;
}
var arr = [10,14,11,5,8,45,24,99];
document.write("当前数组是:"+'<br>'+arr+"<br>");
document.write("排序后的数组是:"+'<br>'+sort(arr));
</script>
4、希尔排序
先将序列分成较多个子序列分别进行排序,再分成较少个子序列分别进行排序,直到最后为一个序列排序。
<script type="text/javascript">
function shellSort(arr){
var len = arr.length;
var b = len/2;
while(b >= 1){
for(var i = 0; i < b; i++){
for(var j = i+b; j < len; j = j+b){
var temp = arr[j];
var k = j - b;
while (k >= i&& temp <arr[k]) {
arr[k+b] = arr[k];
k = k -b;
}
arr[k+b] = temp;
}
}
b = b/2;
}
return arr;
}
var arr = [10,14,11,5,8,45,24,99];
document.write("当前数组是:"+'<br>'+arr+'<br>');
document.write("排序后的数组是:"+'<br>'+shellSort(arr));
</script>