演算法思想:簡單選擇排序是最簡單直觀的一種演算法,基本思想為每一趟從待排序的資料元素中選擇最小(或最大)的乙個元素,並將其作為首元素(如果位置不對則交換),直到所有元素排完為止,簡單選擇排序是不穩定排序。
1、第一趟通過設定崗哨:min=0。
2、遍歷下標為min+1----len-1位置與min位置的數比較。(如果小於崗哨則交換位置)
3、當輪迴圈結束之後,那這個變數儲存的就是當前最小元素的下標。
4、第二趟崗哨加1,重複2、3、直到第len-1趟
function swap(array, i, j);
function selectsort(arr)}}
return arr;
} var arr1 = [3, 5, 2, 4, 8, 6];
console.log(selectsort(arr1));//[ 2, 3, 4, 5, 6, 8 ]
演算法思想:
氣泡排序(bubble sort)也是一種簡單直觀的排序演算法。進行n趟掃瞄要排序的數列,每一趟比較確定最後乙個位置的數,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。這個演算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端。
演算法步驟:
1、第一趟從下標為0開始比較與其相鄰的元素。如果第乙個比第二個大,就交換他們兩個。
2)對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數,此時一趟結束確定最大的元素在最後的位置。
3)針對所有的元素重複1、2、的步驟,除了最後乙個。
4)持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
function swap(array, i, j);
function bubblesort(arr)
}if (flag = 0) break; //全程無交換時退出
}return arr;
}var arr1 = [3, 5, 2, 4, 8, 6];
console.log(bubblesort(arr1));``
主要演算法思想:
插入排序是一種最簡單直觀的排序演算法,它的工作原理是通過構建有序序列,對於每乙個未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。
演算法步驟:
1)將第一待排序序列第乙個元素看做乙個有序序列,把第二個元素到最後乙個元素當成是未排序序列。
2)從頭到尾依次掃瞄未排序序列,將掃瞄到的每個元素插入有序序列(從後到前掃瞄,如果當前元素小於(保證當前位置最大)掃瞄元素,則交換位置)的適當位置。(如果待插入的元素與有序序列中的某個元素相等,則將待插入元素插入到相等元素的後面。)
//從小到大
function insertsort(arr)
}return arr;
}var arr1 = [3, 5, 2, 4, 8, 6];
console.log(insertsort(arr1));//[ 2, 3, 4, 5, 6, 8 ]
八大排序演算法
1.直接插入排序 原理 將陣列分為無序區和有序區兩個區,然後不斷將無序區的第乙個元素按大小順序插入到有序區中去,最終將所有無序區元素都移動到有序區完成排序。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。實現 void insertsort node l,int length void shell ...
八大排序演算法
一 概述 八大排序演算法包括 1 插入排序之直接插入排序 straight insertion sort 2 插入排序之希爾排序 shells sort 3 選擇排序之簡單選擇排序 selection sort 4 選擇排序之堆排序 heap sort 5 交換排序之氣泡排序 bubble sort...
八大排序演算法
排序的定義 輸入 n個數 a1,a2,a3,an 輸出 n個數的排列 a1 a2 a3 an 使得a1 a2 a3 an in place sort 不占用額外記憶體或占用常數的記憶體 插入排序 選擇排序 氣泡排序 堆排序 快速排序。out place sort 歸併排序 計數排序 基數排序 桶排序...