记录学习--算法-第二天

124 阅读1分钟

1.冒泡排序

let example=[2050100876059];
 function fn(arr){
  for(i=0;i<arr.length-1;i++){
   for(j=0;j<arr.length-1-i;j++){
    if(arr[j]>arr[j+1]){
     let temp=arr[j];
     arr[j]=arr[j+1];
     arr[j+1]=temp;
    }
   }
  }
  return arr;
 }
 fn(example);
 console.log(example);

//双重for循环...

好理解的写法

function bubbleSort (arr) {
    let len = arr.length;
    //要进行多少轮排序
    for(let i = 0; i < len-1; i++) {
        //每一轮,相邻两位进行比较,大的放后面
        for(let j = 0; j < len-1-i ; j++) {
            if( arr[j] > arr[j+1] ){
                swap(arr,j,j+1);
            }
        }
    }
}
function swap(arr,i,j){
    let tmp = arr[i];
    arr[i] = arr[j];
    arr[j] = tmp;
}  

//当然,也没简略到哪里去,主要觉得这样子写比较舒服

2.选择排序

第一次从待排序的[数据元素]中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择[排序]是不稳定的排序方法。

代码实现:

function selectionSort(arr){
    let len = arr.length;
    let minIndex;
    for(let i = 0; i < len ; i++) {
        minIndex = i;
        for(let j = i+1; j < len ; j++) {
            if( arr[j] < arr[minIndex] ){
                minIndex = j;
            }
        }
        swap(arr,i,minIndex);
    }
}
function swap(arr,i,j){
    let tmp = arr[i];
    arr[i] = arr[j];
    arr[j] = tmp;
}

慢慢学习,慢慢积累,各位大佬也别喷我,毕竟新手