请用JavaScript语言实现 sort 排序函数,要求:sort([5, 100, 6, 3, -12]) // 返回
[-12, 3, 5, 6, 100]。
如果你有多种解法,请阐述各种解法的思路及优缺点。(仅需用代码实现一种解法,其它解法用文字阐述思路即可)
function exchange(arr,x,y){
var tem = arr[x];
arr[x] = arr[y];
arr[y] = tem;
}
function sort(arr){
for(var i=0;i<arr.length-1;i++){
for(var y=0;y<arr.lenth-i-1;y++){
if(arr[y]>arr[y+1]){
exchange(arr,y,y+1);
}
}
}
} var sort = function(array){
quicksort(array,0,array.length-1);
return array;
}
var quicksort = function(A,lo,hi){
if (lo<hi) {
var q = partition(A,lo,hi);
quicksort(A,lo,q-1);
quicksort(A,q+1,hi);
}
}
var partition = function(A,lo,hi) {
var pivot = A[hi];
var i = lo - 1;
for(var j = lo;j <= hi-1; j++){
if (A[j]<pivot) {
i++;
var tmp = A[i];
A[i] = A[j];
A[j] = tmp;
}
}
var tt = A[i+1];
A[i+1] = A[hi];
A[hi] = tt;
return i+1;
}
var isArray = function(array) {
if (typeof Array.isArray !== "function") {
return Array.isArray(array);
}else {
return Object.prototype.toString.call(array) === "[object Array]";
}
}
var sort = function(array) {
//异常处理
if (!isArray(array)) {
throw new Error("sort():input arguments must be an array");
}
var result = array.concat(),
i,
len = result.length,
j,
temp;
for (i = 0; i < len; i++) {
for (j = i; j < len; j++) {
if (result[i] > result[j]) {
temp = result[i];
result[i] = result[j];
result[j] = temp;
}
}
}
return result;
};
function sort(arr){ for(var i=0;i<arr.length-1;i++){ for(var j=0;j<arr.length-i-1;j++){ if(arr[j]>arr[j+1]){ var hand=arr[j]; arr[j]=arr[j+1]; arr[j+1]=hand; } } } return arr; }