冒泡排序:
有两个数组,让合并一个数组,再进行升序,不用sort
原理:
冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系的要求。如果不满足就让它俩互换位置。一次冒泡会让至少一个元素移动到它应该在的位置,重复n次,就完成了n个数据的排序工作。
算法描述:
(1)比较相邻的元素。如果第一个比第二个大,就交换它们两个;
(2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
(3)针对所有的元素重复以上的步骤,除了最后一个;
重复步骤1~3,直到排序完成。
核心是交换位置:
//交换位置
var num = arr[0]
arr[0] = arr[1]
arr[1] = num
不使用sort,实现一个冒泡排序:
var num = [12, 3, 5, 94, 5, 8, 6, 12, 65];
var len = num.length; //
for (var i = 0; i < len; i++) {
for (var j = i + 1; j < len; j++) {
if (num[i] > num[j]) {
var arr = num[i];
num[i] = num[j];
num[j] = arr;
}
}
}
console.log(num);
选择排序
每一轮从arr中选出最小值或者最大值,放在前面,或者放在后面.
var arr = [5,9,6,43,7,9]
for(var i=0;i<arr.length-1 ; i++){
var minindex = i
for(var j = minindex +1 ;j<arr.length ; j++){
if(arr[j]< arr[minindex]){
minindex = j
}
}
if(minindex !=i){
var temp = arr[i]
arr[i] = arr[minindex];
arr[minindex] = temp
}
}
console.log(arr)