冒泡排序

  1. // 外层循环的次数可以减一
  2. /* 因为[1,2,3]做比较的话,i=0的时候需要循环,i=1的时候需要循环,而最后一个数3则不需要循环了,
  3. * 因为前面每一个循环都会和他作比较,相当于它被动的已经和所有数字比过了
  4. * j为什么是i+1呢,因为j就是每一次i后面的那个数字
  5. */
  6. for(let i=0;i<arr.length-1;i++){
  7. for(let j=i+1;j<arr.length;j++){
  8. if(arr[i]<arr[j]){
  9. // 如果左边的小于右边换位子,这是从大到小排序
  10. let a = arr[i];
  11. arr[i] = arr[j]
  12. arr[j] = a;
  13. }
  14. }
  15. }

选择排序

  1. // 选择排序的理论是,每次从数组里面选出当钱最大或者最小的值
  2. for(let i=0;i<arr.length-1;i++){
  3. // 定义一个最小值的下标假如是数组第一项
  4. let min = i;
  5. for(let j=i+1;j<arr.length;j++){
  6. if(arr[j]<arr[min]){
  7. min = j;
  8. }
  9. }
  10. var temp = this[i];
  11. this[i] = this[min];
  12. this[min] = temp;
  13. }

插入排序

  1. // 插入排序
  2. function insertSort(array) {
  3. /*start根据已排列好的项数决定*/
  4. var start = 1;
  5. /*按顺序,每一项检查已排列好的序列*/
  6. for (var i = start; i < array.length; start++, i++) {
  7. /*跟已排好序的序列做对比,并插入到合适的位置*/
  8. for (var j = 0; j < start; j++) {
  9. /*小于或者等于时(我们是升序)插入到该项前面*/
  10. if (array[i] <= array[j]) {
  11. console.log(array[i] + ' ' + array[j]);
  12. array.splice(j, 0, array[i]);
  13. /*删除原有项*/
  14. array.splice(i + 1, 1);
  15. break;
  16. }
  17. }
  18. }
  19. }