版权声明:本文为博主原创文章,未经博主容许不得转载。javascript
选择排序的基本思想:选择排序是一种相对来讲比较简单的排序算法,基本思路是从数组的第一个元素开始,比较第一个元素的和其余元素的大小,而后把最小的一个元素和第一个元素交换,而后再进行的第二次排序,从第二个元素开始,比较第二个元素和其余元素的大小,再把第二个元素,和以后的元素进行比较,同理把最小的一个元素放在第二个元素的位置,以此类推,一直到数组的倒数第二个元素,到此为止,排序完毕,下面是引用的一张百度的图片,个将选择排序表达的比较清楚。java
附上具体的代码实现(javascript数据结构与算法):算法
/** ** 数据元素交换 **/ function swap(arr, t1, t2){ let temp = arr[t1]; arr[t1] = arr[t2]; arr[t2] = temp; } function selectSort(arr) { var minIndex; for(var i=0;i<arr.length;i++){ minIndex = i; for(var j=i+1;j<arr.length; j++) { if(arr[j] < arr[i]){ minIndex = j; } swap(arr, i, minIndex); } } }
O(n^2)数组
插入排序基本思想: 通俗一点,好比在咱们在斗地主的时候,开始摸到的牌都是乱的,而后咱们按照必定的顺序整理扑克牌,就是根据牌的大小插入到合适的位置,下面引用一个图片,用来讲明插入排序的算法:数据结构
图片详解:
(1) 首先对于第一个元素53,咱们保持不动;
(2)下面咱们看27这个元素,咱们要作的是把27这个元素和前面的元素比较,27<53,因此27和53交换位置;
(3)36和前面的元素比较: 36<53,因此36和53交换位置,再将36和和前面的元素比较,36>23 因此36就应该插入再27和53之间;
以此类推,直到最后一个元素插入到合适的位置,该数组排序完毕;
代码实现:spa
function insertionSort(arr) { var temp, inner; for (var outer = 1; outer <= arr.length - 1; ++outer) { temp = arr[outer]; inner = outer; while (inner > 0 && (arr[inner - 1] >= temp)) { arr[inner] = arr[inner - 1]; --inner; } arr[inner] = temp; } }