1.冒牌排序
? ? ? ? 概念:比较相邻的两个元素? 如果前者比后者大 就将他们的位置进行互换? 最后比较结束 最后的值一定是最大的值
?代码演示:
<script>
//1.冒泡排序f
let arr=[0,1,5,4,7,20,55,66]
for(let i=0;i<arr.length;i++){ //外层控制循环比较的趟数
for(let j=i+1;j<arr.length-1;j++){//里层控制循环比较的趟数
if(arr[j]>arr[j+1]){
// 如果前者大于后者 就定义一个临时变量 交换两个元素的位置
let temp=arr[j];
arr[j]=arr[j+1]
arr[j+1]=temp
}
}
}
console.log(arr);
</script>
最后输出的结果如下
?2.选择排序
概念:依次找到元素的最小值? 将小值依次放在前进行排序??
代码演示:
let arr1=[0,5,7,8,9,6,4,4,7,89,69]
for(let i=0;i<arr1.length;i++){
// 假设第i个为最小值
let min=i;
for(let j=i+1;j<arr1.length-1;j++){
// 如果第j个大于第i个 就假设第j个为最小值 依次比较
if(arr1[j]<arr1[min]){
min=j
}
}
//比较结束 此时拿到了最小的索引 第一趟循环完毕 交换第一趟和最小值的数值
let temp=arr1[i]
arr1[i]=arr1[min]
arr1[min]=temp
}
console.log(arr1);
? ? ? ? 总结:循环假设第一趟的i是最小值? ?在进行依次比较 如果前者小于后者 就将后者的索引存入最小值? ?循环结束 此时min里面存的就是最小值得索引? 将他与循环的趟数进行互换位置? 此时最小值就会依次排序?
3.插入排序
即构建有序序列,未排序数据依次从已排序数据按从后往前比较,插入到合适的位置。代码如下:
let arr3=[0,5,47,8,9,2515]
for (let i=1;i<arr3.length;i++){
// 定义前者
let cur=i-1
// 定义后者 用来保存当前的大值
let temp=arr3[i]
// while循环 逻辑与判断 一false全false 如果数组中的前者大于后者 就把后者的值赋值给前者 再让前者--继续比较
while (cur>=0&&arr3[cur]>temp){
arr3[cur+1]=arr3[cur]
cur--;
}
//此时temp里存的是未赋值之前的值 比较结束将
arr3[cur+1]=temp
}
console.log(arr3);
排序结果如下
?今天先更新到这里? ?后续会继续更新排序的算法详解
|