有时候当你没有坚定下决心做某件事情的时候,任何理由都可能成为阻挡你的原因,我觉得那是因为生活逼得你还是不太紧,当你坚定的要去发生改变时,你会发现的开始成果就会是很大的。不得不说改变对一个人有多重要。
排序有几种方法,这里主要说快速排序和冒泡排序。
冒泡排序
- 冒泡排序就是将最大数的冒泡到最后
- 实现思路:将从头开始将相邻的两项相比,每一次对比相邻两个数据的大小,小的排在前面,如果前面的数据比后面的大就交换这两个数的位置,持续直到数据结束。最大的数将会在最后。再重复前边的操作。
let arr = [90,0,-10,88,999,100,102,2,3,20];
function sortArr(arr) {
let count = 0;
for (let i=0;i<arr.length;i++){
for(let j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
var temp =arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
console.log("第"+(++count)+"次排序后:"+ arr);
}
}
return arr;
}
console.log(sortArr(arr));
快速排序
- 先找到一个基准点(一般都是数组中部),然后数组被该基准点分为两部分,依次依次与该基准点比较,如果比基准点小则放在左边,反之放在右边,分别用两个空数组去存储比较后的数据,最后然后在重复这个步骤
let arr = [90,0,-10,88,999,100,102,2,3,20];
var times = 0;
function quickSort(arr) {
if (arr.length<1) {
return arr;
}
let centerIndex = Math.floor(arr.length/2); //取到数组中间的位置
let centerVal = arr.splice(centerIndex, 1);//获取基准点的值splice(index,1)函数可以返回数组中被删除的那个数arr[index+1]
let left = []; //用来存放左边的数
let right = []; //用来存放右边的数
for(var i=0;i<arr.length;i++){
if(arr[i]<centerVal){
left.push(arr[i]);//比基准点小的放在左边数组
console.log("这是left:"+left);
}
else{
right.push(arr[i]);//比基准点大的放在右边数组
console.log("这是right:"+right);
}
}
console.log("第"+(++times)+"次排序后:"+arr);
//递归执行以上操作,对左右两个数组进行以上操作,直到数组长度为<=1;
return quickSort(left).concat(centerVal,quickSort(right));
}
console.log(quickSort(arr));
- 直接利用数组的排序方法sort来实现
let arr = [90,0,-10,88,999,100,102,2,3,20];
function compare(a,b) {
return a-b;
}
var newArr = arr.sort(compare);
console.log(newArr);