H5中几种排序查找算法

哈喽,,大家,学习过程中个人觉得排序算法挺重要的,虽然目前没发现在哪里用到过,但是记着总是有好处的。。今天给大家说一下学习中写的几种排序查找算法,希望对大家有用

1、简单排序算法

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

  第1趟:12与49交换:12{27 65 97 76 49 38}

  第2趟:27不动 :12 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) /*对记录数组r做简单选择排序,length为待排序记录的个数*/

{

int temp;

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

{

int index=i; //假设index处对应的数组元素是最小的

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

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

index=j;

if ( index!=i)  //若无序区第一个元素不是无序区中最小元素,则进行交换

{ 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;

       }

     }

   }

折半查找必须是有序数据:

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);

插入排序总是用后一个和第一个来比较,所以第一个元素不用变。。

大概就这几种,希望能对你们有用。。晚上要早点休息啊大家,别熬夜。。

    原文作者:洋_洋lemon
    原文地址: https://www.jianshu.com/p/b934afc4b9ef
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞