一、冒泡排序算法
在冒泡排序的过程中,按照要求从小到大排序或从大到小排序,不断比较数组中相邻两个元素的值,较小或较大的元素前移。(升序排序:大数向下沉,小数向上冒)
var a = [10, 7, 5, 27, 98, 31]
console.log("排序前:");
for (var k of a) {
console.log(k)
}
// 冒泡排序:要求从小到大排
for (var i = 0; i < a.length; i++) { //外循环:控制比较的轮次(趟数)
for (var j = 0; j < a.length-1-i; j++) { //内循环:进行数据的比较,小数向前移动,大数向后移动
if (a[j] > a[j + 1]) {
var temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
console.log("排序后:",a)
var a = [10, 7, 5, 27, 98, 31]
console.log("排序前:");
for (var k of a) {
console.log(k)
}
// 要求从大到小排
for (var i = 0; i < a.length; i++) { //外循环:控制比较的轮次(趟数)
for (var j = 0; j < a.length-1-i; j++) { //内循环:进行数据的比较,小数向前移动,大数向后移动
if (a[j] < a[j + 1]) {
var temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
console.log("排序后:",a)
二、选择排序算法
每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。
三、插入排序算法
通过构建有序数组元素的存储,对未排序的数组元素,在已排序的数组中从最后一个元素向第一个元素遍历,找到相应位置并插入。(插入排序算法是交换类排序算法中效率最高的)
var arr = [10, 8, 100, 31, 87, 70, 1, 88];
var str = '';
for (var k of arr) {
str += k + '\t';
}
console.log("排序前:", str);
// 从小到大排序
for(var i=1;i<arr.length;i++){ //外循环:控制循环趟数
for (var j=i;j>0;j--){ //内循环:给数据找合适的插入位置
if (arr[j-1]>arr[j]){ //此处j-1,所以外循环i不能从0开始,要从1开始
var temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}
}
}
console.log("排序后:",arr)
var arr = [10, 8, 100, 31, 87, 70, 1, 88];
var str = '';
for (var k of arr) {
str += k + '\t';
}
console.log("排序前:", str);
// 从大到小排序
for(var i=1;i<arr.length;i++){ //外循环:控制循环趟数
for (var j=i;j>0;j--){ //内循环:给数据找合适的插入位置
if (arr[j-1]<arr[j]){ //此处j-1,所以外循环i不能从0开始,要从1开始
var temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}
}
}
console.log("排序后:",arr)