冒泡排序
<script>
/* 冒泡排序 */
// 通过for循环来实现排序
// 原理 : 将数组中的数值,进行有序排列,从小到大排序
// 操作 : 数据交换
/*
两个相邻的数据单元,进行比较大小,
第一个单元和第二个单元数值比较大小,
第一个单元数值比较大时,就交换两个单元存储的数据。 以此类推
*/
var arr = [9,8,7,6,5,4,3,2,1];
// 用for循环进行排序操作
// 外层循环,决定循环次数,次数是 arr数组的长度-1;
// 因为每一次循环都会比较出一个最大值,比较过的值就不用再参与循环 然后在-1;
for(var i=0;i <= (arr.length-1)-1;i++){
// 内层循环,每一次循环 比较出一个最大的值;
// 上一次循环比较出来的值,不参加下一次循环,所以减掉 j,优化程序。
/* 档次循环到倒数第二个数据单元 时,
它只用和最后一个数据单元进行比较,
那么最后一个数据单元,就不用比较了 所以 -1 操作 优化程序*/
for(var j = 0; j<=(arr.length-1)-1-i;j++){
//进行判断比较,如果 arr[j] 的数值大于 arr[j+1](也就是下一个数值),那么进行 交换的存储数据
if(arr[j]>arr[j+1]){
//定义中间变量;进行数据交换。
var middle = 0;
middle = arr[j];
arr[j] = arr[j+1];
arr[j+1] = middle;
}
}
}console.log(arr);
</script>
选择排序
<script>
/* 选择排序 */
/* 从起始位置开始,找数组中 数值最小的索引下标;
如果最终存储的索引下标,不是在索引的起始位置,
那么就与起始位置存储的数据进行交换。
*/
// 没次循环,都会将最小值储存在起始位置上。
// 下次循环,之前的起始位置,不参加下一次循环。
var arr = [9,8,7,6,5,4,3,2,1]
// 外层循环,实现排序循环次数,次数是单元个数 -1
// 之前的起始位置,不参与下一次循环 -1
for(var i=0;i<=(arr.length-1)-1;i++ ){
// 先默认起始位置就是最小值位置,存储其实位置的索引,也就是 i 。
var min = i;
// 默认的最小位置是当前循环的起始位置(也就是开始)是 i 。
// 比较,要从下个位置开始,内层循环开始,是比较起始位置的下一个开始循环 i+1 ;
for(var j = i+1;j<=arr.length-1;j++){
//判断比较 如果起始位置单元数值 大于比较的 数值,将小于起始位置的索引赋值给 min 。
if(arr[min]>arr[j]){
min = j;
}
}
// 内层循环执行完毕,存储的索引下标如果不是起始的索引 j ;
// 就交换 min中存储的索引下标对应的数值 和 j索引下标应的数值
if(min != i){
var middle = 0;
middle = arr[min];
arr[min] = arr[i];
arr[i] = middle;
}
}
console.log(arr)
</script>