算法排序小集合

冒泡排序

function bubbleSort(arr){
            var len = arr.length;
            for(var i = 0; i < len; i++){
                for(var j = 0; j < len - 1 - i; j++){
                    if(arr[j] > arr[j+1]){//相鄰兩個元素比較,大的就往后挪 
                        var temp = arr[j+1]; 
                        arr[j+1] = arr[j];
                        arr[j] = temp;
                    }
                }
            }
            return arr;
        }

選擇排序


        //1.首先在未排序的序列中找到最小元素仔雷,存放到排序序列的起始位置
        //2.然后在剩余未排序的元素中找到最小元素炮赦,放到已排序序列的末尾
        //3.重復(fù)第二部吟秩,直到所有元素均排序完畢
        function selectionSort(arr){
            var len = arr.length,minIndex,temp;
            for(var i = 0; i < len ; i++){
                minIndex = i;//從第0個開始和剩余的元素比較
                for(var j = i + 1;j < len; j++){
                    if(arr[j] < arr[minIndex]){
                    //arr[j]每次都和arr中最小的元素比較俗扇,如果arr[j]小于最小元素慌闭,就把minIndex的值改為j
                    //for循環(huán)完畢后举畸,得到一個最小值的索引
                        minIndex = j;
                    }
                }
                //然后在這里查排,把最小的值,放到索引為i的位置
                temp = arr[i];
                arr[i] = arr[minIndex];
                arr[minIndex] = temp;
            }
            return arr;
        }

插入排序


1.將第一排排序序列第一個元素看做一個有序序列抄沮,把第二個元素到最后一個元素當(dāng)成是未排序序列
2.從頭到尾一次掃描未排序序列跋核,將掃描到的每個元素插入有序序列的適當(dāng)位置(如果待插入的元素與有序序列中的某個元素相等,則將待插入元素插入到相等元素的后面)

function insertSort(arr){
            var len = arr.length;
            var preIndex,current;
            for(var i = 1; i < len; i++){
                preIndex = i - 1;
                current = arr[i];
                while(preIndex >= 0 && arr[preIndex] > current){
                //當(dāng)前元素不斷和它的前一個元素做比較叛买,大的往后挪砂代,挪完后preIndex減1,再繼續(xù)對比,
                //直到前一個元素小于當(dāng)前元素率挣,然后把當(dāng)前元素插入的前一個元素的后面泊藕,這里preIndex是不斷在變化的
                    arr[preIndex + 1] = arr[preIndex];
                    preIndex--;
                }
                //對比完后,把當(dāng)前元素加到前一個序列最小元素的后面
                arr[preIndex + 1] = current;
            }
            return arr;
        }

快速排序

首先把數(shù)組最左邊的元素當(dāng)做基準(zhǔn)數(shù)难礼,然后把這個序列中所有比基準(zhǔn)數(shù)大的數(shù)放在基準(zhǔn)數(shù)的右邊娃圆,比基準(zhǔn)數(shù)小的放在左邊

var arr = [1,3,6,4,44,546,333,45];
                

            function quickSort(left,right){
                var i,j,t,temp;
                if(left > right){
                    return;
                }

                temp = arr[left];  //基準(zhǔn)數(shù)  最左邊的數(shù)
                i = left;
                j = right;
                while(i != j){
                    //從右開始往左找
                    while(arr[j] >= temp && i < j){
                        j--;
                    }
                    // 再從左往右找
                    while(arr[i] <= temp && i < j){
                        i++;
                    }

                    // 交換兩個數(shù)在數(shù)組中的位置
                    if(i < j){// 當(dāng)i和j還沒有相遇時
                        t = arr[i];
                        arr[i] = arr[j];
                        arr[j] = t;
                    }
                }

                // 最終將基準(zhǔn)數(shù)歸為
                arr[left] = arr[i];
                arr[i] = temp;

                quickSort(left,i-1); // 繼續(xù)處理左邊的,遞歸
                quickSort(i+1,right); // 繼續(xù)處理右邊的蛾茉,遞歸
                return;

            }

            // 調(diào)用 quickSort(0,arr.length-1)

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末讼呢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子谦炬,更是在濱河造成了極大的恐慌悦屏,老刑警劉巖节沦,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異础爬,居然都是意外死亡甫贯,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門看蚜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叫搁,“玉大人,你說我怎么就攤上這事供炎】事撸” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵音诫,是天一觀的道長惨奕。 經(jīng)常有香客問我,道長竭钝,這世上最難降的妖魔是什么梨撞? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮香罐,結(jié)果婚禮上聋袋,老公的妹妹穿的比我還像新娘。我一直安慰自己穴吹,他們只是感情好幽勒,可當(dāng)我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著港令,像睡著了一般啥容。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上顷霹,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天咪惠,我揣著相機與錄音,去河邊找鬼淋淀。 笑死遥昧,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的朵纷。 我是一名探鬼主播炭臭,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼袍辞!你這毒婦竟也來了鞋仍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤搅吁,失蹤者是張志新(化名)和其女友劉穎威创,沒想到半個月后落午,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡肚豺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年溃斋,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吸申。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡梗劫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出呛谜,到底是詐尸還是另有隱情,我是刑警寧澤枪萄,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布隐岛,位于F島的核電站,受9級特大地震影響瓷翻,放射性物質(zhì)發(fā)生泄漏聚凹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一齐帚、第九天 我趴在偏房一處隱蔽的房頂上張望妒牙。 院中可真熱鬧,春花似錦对妄、人聲如沸湘今。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽摩瞎。三九已至,卻和暖如春孝常,著一層夾襖步出監(jiān)牢的瞬間旗们,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工构灸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留上渴,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓喜颁,卻偏偏與公主長得像稠氮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子半开,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 概述 排序有內(nèi)部排序和外部排序括袒,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大稿茉,一次不能容納全部...
    蟻前閱讀 5,186評論 0 52
  • 概述:排序有內(nèi)部排序和外部排序锹锰,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序芥炭,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    每天刷兩次牙閱讀 3,732評論 0 15
  • 一恃慧、直接插入排序 直接插入排序(Insertion Sort)的基本思想是:每次將一個待排序的元素記錄园蝠,按其關(guān)鍵字...
    kevin16929閱讀 558評論 0 0
  • 概述排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序痢士,而外部排序是因排序的數(shù)據(jù)很大彪薛,一次不能容納全部的...
    Luc_閱讀 2,275評論 0 35
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 將一個記錄插入到已排序好...
    依依玖玥閱讀 1,258評論 0 2