简单的算法
//1.冒泡排序:冒泡排序總共需要排序n - 1 趟,每趟比較 n -1 - 趟數 這么多次;每趟排序可能交換多次元素,找到其中一個的元素最終位置,每次比較都是相鄰元素之間的大小比較。----最常用
var oArr = [78,23,24,55,66,2,55,9,12,38];
// 1冒泡排序
// 從小到大排列
// 因為不用跟自身比較,所以循環次數-1
for (var i=0; i<oArr.length-1; i++) {
// 因為每次比較,都會得出一個最大/最小數,被放置在了最右邊,所以要-i
?for (var j=0; j<oArr.length-1-i; j++) {
// 如果前一個數,比后一個數大,那么交換位置
if (oArr[j] > oArr[j+1]) {
var temp = oArr[j];
? oArr[j] = oArr[j+1];
? oArr[j+1] =temp;
? }
?}
?}
? console.log(oArr);
?
?
?
//2.sort 方法;js 數組里的一個方法,sort 可以實現排序,只要傳遞一個函數即可
var arr = [15,342,448,1150,1831,920,10,50,78,100];
//要求按照數字的從小到大排序
?arr.sort();
? console.log(arr);
? arr.sort(function(obj1,obj2){
? if(Number(obj1) < Number(obj2)){//前面數減去后面數
? return -1;//desc? ? ? ? ? // -1 代表后面的數大
? }else if(Number(obj1) > Number(obj2)){
? return 1;//asc
? }else{
? return 0;//same
?}
?
? });
?console.log(arr);//打印從小到大排序,改變負1,則就可改變排序順序
?
?
//3.選擇排序----最常用
?
var arr = [8,6,14,5,0,1,54,7,3,12];
//比較 n - 1 趟
?
for(var i = 0 ; i < arr.length - 1 ; i ++){
//假定第一個元素是 最大值
var max = 0 ;//假定每次循環都要把第一個置為最大值,所以不能放到外面
//找到了某一趟的最大值
for(var j = 1 ; j < arr.length - i;j++){
if(arr[max] < arr[j]){
max = j;
}
}
//放到合適的位置
if(max != arr.length - i - 1 ){
//交換著兩個位置的元素
var temp = arr[max];
arr[max] = arr[arr.length - i- 1];
arr[arr.length - i -1] = temp;
}
?
}
console.log(arr);
轉載于:https://www.cnblogs.com/zxr8023/p/6055530.html
總結
- 上一篇: codevs 1557 热浪
- 下一篇: linux基础-第十五单元 软件包的管理