1、冒泡排序
在一排数中,从前往后对相邻的两个输依次比较和调整,让较大的数往下沉,较小的数往前冒。(第一个和第二个比较,如果后面的大于前面的则换第二个和第三个比较。。。)
for(var i = 1; i < arr.length;i++){
for(var j = 0;j < arr.length - i;j++){
if(arr[j] > arr[j+1]){
var temp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = temp
}
}
}
2、选择排序
在一排数中,第一个和第二个比较,若后面的比前面小则交换下标,用最小的和后面的比较,若后面的大于前面的则下标不变。
for(var i = 0;i < arr.length - 1;i++){ //确定轮数
var iMink = i; //记录最小值的下标
for(var j = i+1;j< arr.length ;j++){
if(arr[iMink] >arr[j]){
iMink = j
}
}
if(iMink != i){//交换数据
var temp = arr[i]
arr[i] = arr[iMink]
arr[iMink] = temp;
}
}
3、插入排序
假设前面的数已排好顺序,现在把第n个数插入到前面的有序数列中,并排序,如此反复循环,直到排好顺序。
第二个和第一个比较,第三个和第一个、第二个比较。。。若后面的数比前面的数小则交换位置。
for(var i = 1; i < arr.length ;i++){
for(var j = i;j > 0; j--){
if(arr[j] < arr[j - 1]){
var temp = arr[j]
arr[j] = arr[j - 1]
arr[j - 1] = temp
}else{
break;
}
}
}
4、快速排序
选择一个基准元素,通常选第一个或最后一个;通过扫描将待排序序列分为两部分:left:比基准数小,right:比基准数大。基准元素已确定了位置,用同样的方法递归的排序划分两部分。
var arr = [1,22,4,5,7,15]
function quickSort(arr){
if(arr.length <= 1){
return arr
}
var ibase = arr.shift()
var left = [],right = []
for(var i = 0;i < arr.length;i++){
if(arr[i] < ibase){
left.push(arr[i])
}else{
right.push(arr[i])
}
}
return quickSort(left).concat(ibase,quickSort(right))
}
来源:CSDN
作者:专写bug~~~
链接:https://blog.csdn.net/qq_32538087/article/details/103256417