冒泡排序
概念
依次对数组中相邻数字进行比较(两两比较),大的放后面
冒泡排序算法[理解]
比较相邻元素。如果第一个比第二个大,就交换他们两个。
从第一个元素一次于相邻元素比较,最大的就在最后一个
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
代码方式理解
理解方式1
<script>
// 1.两个for循环 2. -1 -1 -j
var arr = [5, 4, 3, 2, 1];
console.log(arr);
// 通过排序 =>[1,2,3,4,5];
// 遍数 : 5遍 : 5 4 3 2
// 注意1: 5个值,,确立了4个,,最后一个必须给留下了
// 遍数 : 5-1 = arr.length-1 次
var ci = 0;
for (var j = 0; j < arr.length-1; j++) {
//次数 : 两两比较 找到最大值
// 5个数 : 比较4次就可以了
for (var i = 0; i < arr.length-1-j; i++) {
ci++;
if (arr[i] > arr[i + 1]) {
var temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
console.log(ci);
console.log(arr);
// -j :
// j=0; 确定了5
// j=1; 已经确定了5 可以少1次
// j=2 已经确定了4 和 5 , 可以少2次
// j=3 已经确定了 3 4 5 可以少 3次了
</script>
选择排序
算法原理[理解]
将第一位依次与后面的元素相比较,得到最小值,与第一位交换。
再用第二位依次与后面元素相比较,得到最小值,与第二位交换。
从原始数据中找到最小元素,并放在数组的最前面。然后再从下面的元素中找到最小元素,放在之前最小元素的后面,直到排序完成
// 两个值互相比较,小的值放在前面
// 将第一位依次与后面的元素相比较,得到最小值,与第一位交换。
// 再用第二位依次与后面元素相比较,得到最小值,与第二位交换。
var arr = [5,4,3,2,1];
for(var i=0;i<arr.length-1;i++ ){ // 确定比较的遍数
// 假设一个最小值,和索引
var min = arr[i];
var minIndex = i;
for(var j=i+1;j<arr.length;j++){ // 让数组中的每一个元素进行比较
// 用假设的最小值,和当前循环的元素进行比较
if(min>arr[j]){
// 替换最小值,继续进行比较
min = arr[j];
minIndex = j;
}
}
// 将真正的最小值,放到对应的位置
arr[minIndex] = arr[i];
arr[i] = min;
}
console.log(arr);