快排
function quickSort(arr){
if(arr.length<2) {return arr}
var left=[],right=[],mid=arr.splice(Math.floor(arr.length/2),1) ;
for(var i=0;i<arr.length;i++){
if(arr[i]<mid){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
return quickSort(left).concat(mid,quickSort(right))
}
console.log(quickSort([6,1,2,4,3,5]))
冒泡排序
function bubbleSort(arr){
for(var i=0;i<arr.length;i++){
for(var j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
var temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
}
}
}
return arr;
}
console.log(bubbleSort([6,1,2,4,3,5]))
###选择排序
function selectSort(arr){
var min,temp;
for(var i=0;i<arr.length-1;i++){
min=i;
for(var j=i+1;j<arr.length;j++){
if(arr[min]>arr[j]){
min=j;
}
}
temp=arr[i];
arr[i]=arr[min];
arr[min]=temp;
}
return arr;
}
console.log(selectSort([6,1,2,4,3,5]))
排序2
//快排
function Quick_sort(A,l,r){
if(l<r){
var index=f1(A,l,r)
Quick_sort(A,l,index-1)
Quick_sort(A,index+1,r)
}
return A
}
function f1(A,l,r){
var i=l
var j=r
var x=A[(l+r)/2]
while(i<j){
while(A[i]<x){
i++
}
while(A[j]>x){
j--
}
if(i<j){
x=A[i]
A[i]=A[j]
A[j]=x
}
}
A[i]=x
return i
}
var A=[2,1,4,3,5,8,7]
Quick_sort(A,0,6)
console.log(A)
//冒泡
function bubblesort(A){
var temp=0
for(var i=0;i<A.length;i++){
for(var j=i+1;j<A.length;j++){
if(A[i]>A[j]){
temp=A[i]
A[i]=A[j]
A[j]=temp
}
}
}
}
var A=[2,1,4,3,5,8,7]
bubblesort(A)
console.log(A)
//选择排序
function selectSort(A){
var temp
for(var i=0;i<A.length;i++){
var min =i
for(var j=i+1;j<A.length;j++){
if(A[j]<A[i]){min=j}
}
if(i!==min){
temp=A[i]
A[i]=A[min]
A[min]=temp
}
}
}
var A=[2,1,4,3,5,8,7]
selectSort(A)
console.log(A)
//二分排序
function binarySearch(A,item){
var low=0
var high=A.length-1
while(low<=high){
var mid=Math.floor((low+high)/2)
var x=A[mid]
if(item<x){
high=mid-1
}else if(item>x){
low=mid+1
}else{
return mid
}
}
return -1
}
var A=[2,1,4,3,5,8,7]
var b=binarySearch(A,5)
console.log(b)
//归并排序
function mergeSort(A){
if(A.length==1){return A}
var mid=Math.floor((A.length)/2)
var left=A.slice(0,mid)
var right=A.slice(mid,A.length)
return merge(mergeSort(left),mergeSort(right))
}
function merge(l,r){
var res=[]
var i=0,j=0
while(i<l.length&&j<r.length){
if(l[i]<r[j]){
res.push(l[i++])
}else {
res.push(r[j++])
}
}
while(i<l.length){
res.push(l[i++])
}
while(j<r.length){
res.push(r[j++])
}
return res;
}
var A=[2,1,4,3,5,8,7]
var B=mergeSort(A)
console.log(B)