H5中幾種排序查找算法

哈嘍,,大家,學(xué)習(xí)過程中個人覺得排序算法挺重要的,雖然目前沒發(fā)現(xiàn)在哪里用到過,但是記著總是有好處的。。今天給大家說一下學(xué)習(xí)中寫的幾種排序查找算法,希望對大家有用

1、簡單排序算法

初始序列:{49 27 65 97 76 12 38}

  第1趟:12與49交換:12{27 65 97 76 49 38}

  第2趟:27不動?。?2 27{65 97 76 49 38}

  第3趟:65與38交換:12 27 38{97 76 49 65}

  第4趟:97與49交換:12 27 38 49{76 97 65}

  第5趟:76與65交換:12 27 38 49 65{97 76}

  第6趟:97與76交換:12 27 38 49 65 76 97 完成

算法具體描述如下:

void SelectSort(RecordType r[], int length) /*對記錄數(shù)組r做簡單選擇排序,length為待排序記錄的個數(shù)*/

{

int temp;

for ( i=0 ; i< length-1 ; i++) //n-1趟排序

{

int index=i; //假設(shè)index處對應(yīng)的數(shù)組元素是最小的

for ( j=i+1 ; j < length ; j++)  //查找最小記錄的位置

if (r[j].key < r[index].key )

index=j;

if ( index!=i)  //若無序區(qū)第一個元素不是無序區(qū)中最小元素,則進行交換

{ temp= r[i]; r[i]= r[index]; r[index]=temp; } //利用temp作為臨時空間,兩個值交換的橋梁

}

}

冒泡算法:

var flag = 0;

? ?for (var i = 0; i < arr.length - 1; i++) {

? ? ?flag = 1;

? ? ?for (var j = 0; j < arr.length - 1; j++) {

? ? ? ?if (arr[j] > arr[j + 1]) {

? ? ? ? ?var temp = arr[j];

? ? ? ? ?arr[j] = arr[j + 1];

? ? ? ? ?arr[j + 1] = temp;

? ? ? ? ?flag = 0;

? ? ? ?}

? ? ?}

? ?}

折半查找必須是有序數(shù)據(jù):

var target = 7;

?var start = 0;

?var end = arr.length - 1;

?var mid = 0;

?while (start <= end) {

? mid = Math.round((start + end) / 2);

? if (a[mid] < target) {

? ?start = mid + 1;

? }else if(a[mid] > target){

? ?end = mid - 1;

? }else {

? ?break;

? }

?}

?if (start > end) {

? console.log("沒找到");

?}else {

? console.log("arr[" +mid+ "] = " + arr[mid]);

?}

選擇查找:

var arr = [4, 6, 8, 1, 9, 3, 5, 2, 7];

for (var i = 0; i < arr.length - 1; i++) {

? var minIndex = i;

? for (var j = minIndex + 1; j < arr.length; j++) {

? ?if (arr[minIndex] > arr[j]) {

? ? minIndex = j;

? ?}

? }

? var temp = arr[minIndex];

? arr[minIndex] = arr[i];

? arr[i] = temp;

?}

?console.log(arr);

插入排序

var arr1 = [1, 3, 4, 7, 8, 2];

?for (var i = 1; i < arr1.length; i++) {

? var j = i;

? var temp = arr1[j];

? while (j > 0 && temp < arr1[j - 1]) {

? ?arr1[j] = arr1[j - 1];

? ?j--;

? }

? arr1[j] = temp;

?}

?console.log(arr1);

插入排序總是用后一個和第一個來比較,所以第一個元素不用變。。

大概就這幾種,希望能對你們有用。。晚上要早點休息啊大家,別熬夜。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容