1.要求创建一个函数,函数作用对指定数组通过不同的排序算法进行升序或降序排序,并返回排序后的数组。
a) 函数支持三个参数传参,前两个为必填项,最后一个为可选参数。
b) 第一个参数是要排序的数组,第二个参数为排序方式(分别使用0和1 代表冒泡排序和选 择排序),第三个参数为升序和降序(使用0和1代表升序和降序)
var arr = [25, 96, 36, 25, 14, 75, 63, 12, 36, 31, 25, 1, 2, 5, 3, 6];
console.log(arr);
function bubble(arr, ol, lp) {
//冒泡排序
if (ol == 0) {
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - i - 1; j++) {
//从小到大
if (lp == 0) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
//从大到小
} else if (lp == 1) {
if (arr[j] < arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
//选择排序
} else if (ol == 1) {
for (var i = 0; i < arr.length; i++) {
//从小到大
if (lp == 0) {
var min = i;
for (var j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[min]) {
min = j;
}
}
var num = arr[i];
arr[i] = arr[min];
arr[min] = num;
//从大到小
} else if (lp == 1) {
var min = i;
for (var j = i + 1; j < arr.length; j++) {
if (arr[j] > arr[min]) {
min = j;
}
}
var num = arr[i];
arr[i] = arr[min];
arr[min] = num;
}
}
}
}
bubble(arr, 1, 1)
console.log(arr);
function arrSort(arr, sortType, sortOrder) {
if (sortType == 0) {
return bubbleSort(arr, sortOrder);
} else {
return selectionSort(arr, sortOrder);
}
}
//冒泡排序
function bubbleSort(arr, sortOrder) {
var len = arr.length;
for (var i = 0; i < len; i++) {
for (var j = 0; j < len - 1; j++) {
if (sortOrder == 0) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp
}
} else if (sortOrder == 1) {
if (arr[j] < arr[j + 1]) {
var temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
}
return arr;
}
//选择排序
function selectionSort(arr,sortOrder){
var len = arr.length;
var minIndex,temp;
for(var i = 0;i < len - 1;i++){
minIndex = i;
for(var j = i + 1;j < len;j++){
if(sortOrder == 1){
if(arr[j] > arr[minIndex]){
minIndex = j
}
}else if(sortOrder == 0){
if(arr[j] < arr[minIndex]){
minIndex = j;
}
}
}
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
return arr;
}
var arr = [1,5,9,56,65,465,465,4,54,654,65,41,23,1,44,6,13,13,165,4,651,23,651]
console.log(arrSort(arr, 0, 0))
console.log(arrSort(arr, 0, 1))
console.log(arrSort(arr, 1, 0))
console.log(arrSort(arr, 1, 1))