写代码啦
四大排序算法(未完待续)
回复数(0) 浏览数(11)
{{topic.upvote_count || 0}} 编辑 回复

今天这偏博客是用来回顾上次课程学习的八大排序中的四个重要的排序算法
首先八大排序都有:选择排序、快速排序、归并排序、计数排序、冒泡排序、插入排序、希尔排序、基数排序

选择排序

选择排序的原理:就是从数组中选择最小的数放在最前面,剩下的数组在选择最小的放在新数组的最前面,一次进行就可实现从小到大的排序
```
let sort = (numbers)=>{
for (let i = 0;i let index = minIndex(numbers.slice(i))+i;
if(index !== i){swap(numbers,index,i)}
}
return numbers
}
let swap =(numbers,i,j)=>{
let temp = numbers[i]
numbers[i] = numbers[j]
numbers[j] = temp;
}
let minIndex = (numbers)=>{
let index = 0;
for(let i = 0;i if(numbers[i] index = i;
}

}return index;

}
```
快速排序的原理:就是找一个基准,把比基准值小的放在前面,比基准值大的放在后面,然后再选一个基准继续进行,如此循环就可以实现从小到大的排序

归并排序的原理:就是讲数组一分为二,在将两个小数组里的元素在一分为二,在进行排序合并排序合并,得到最后的数组就是从小到大拍好序的数组
```
let mergeSort = arr => {
let k = arr.length;
if(k===1){return arr;}
let left =arr.slice(0,Math.floor(k/2))
let right =arr.slice(Math.floor(k/2))
return merge(mergeSort(left),mergeSort(right))

}
let merge=(a,b)=>{
if(a.length===0){
return b;
}
if(b.length===0){return a}
return a[0]>b[0]?[b[0]].concat(merge(a,b.slice(1))):[a[0]].concat(merge(a.slice(1),b))
}
```
技术排序的原理:计数排序用到了哈希表,首先遍历数组,把每个数组的元素,以及每个元素出现的频率用哈希表记录下来,在遍历一遍哈希表,从0-最大值,依次遍历有就放到数组中,实现从小到大排序

冒泡排序的原理:

{{topic.upvote_count || 0}}

今天这偏博客是用来回顾上次课程学习的八大排序中的四个重要的排序算法
首先八大排序都有:选择排序、快速排序、归并排序、计数排序、冒泡排序、插入排序、希尔排序、基数排序

选择排序

选择排序的原理:就是从数组中选择最小的数放在最前面,剩下的数组在选择最小的放在新数组的最前面,一次进行就可实现从小到大的排序
```
let sort = (numbers)=>{
for (let i = 0;i let index = minIndex(numbers.slice(i))+i;
if(index !== i){swap(numbers,index,i)}
}
return numbers
}
let swap =(numbers,i,j)=>{
let temp = numbers[i]
numbers[i] = numbers[j]
numbers[j] = temp;
}
let minIndex = (numbers)=>{
let index = 0;
for(let i = 0;i if(numbers[i] index = i;
}

}return index;

}
```
快速排序的原理:就是找一个基准,把比基准值小的放在前面,比基准值大的放在后面,然后再选一个基准继续进行,如此循环就可以实现从小到大的排序

归并排序的原理:就是讲数组一分为二,在将两个小数组里的元素在一分为二,在进行排序合并排序合并,得到最后的数组就是从小到大拍好序的数组
```
let mergeSort = arr => {
let k = arr.length;
if(k===1){return arr;}
let left =arr.slice(0,Math.floor(k/2))
let right =arr.slice(Math.floor(k/2))
return merge(mergeSort(left),mergeSort(right))

}
let merge=(a,b)=>{
if(a.length===0){
return b;
}
if(b.length===0){return a}
return a[0]>b[0]?[b[0]].concat(merge(a,b.slice(1))):[a[0]].concat(merge(a.slice(1),b))
}
```
技术排序的原理:计数排序用到了哈希表,首先遍历数组,把每个数组的元素,以及每个元素出现的频率用哈希表记录下来,在遍历一遍哈希表,从0-最大值,依次遍历有就放到数组中,实现从小到大排序

冒泡排序的原理:

11
回复 编辑