题目
给出正整数数组 array = [2,1,5,3,8,4,9,5]
请写出一个函数 sort,使得 sort(array) 得到从小到大排好序的数组 [1,2,3,4,5,5,8,9]
新的数组可以是在 array 自身上改的,也可以是完全新开辟的内存。
不得使用 JS 内置的 sort API
答案
var array = [2, 1, 5, 3, 8, 4, 9, 5];
function sort(arr) {
var container = [];
var cnt = arr.length;//设置大循环的循环次数
var max = 0;//设置max的初始值
for (j = 0; j < cnt; j++) {
for (i = 0; i < arr.length; i++) {
if (max <= arr[i]) {
max = arr[i];
}
}//求出此时的数组中最大的值
container.unshift(max);//将最大值放到当前数组的最前面
for (i = 0; i < arr.length; i++) {
if (max === arr[i]) {
arr.splice(i, 1);//删掉数组array中等于max的那个数字
max = 0;//重置max的值
//这一步保证这一轮删除数组中元素的循环不会删掉数组中重复的值
//同时也方便下一次最外圈的循环
}
}
}
return container;
}
console.log(sort(array));//output[1, 2, 3, 4, 5, 5, 8, 9]