三种常用排序算法整理

来源:互联网 发布:http传输数据 编辑:程序博客网 时间:2024/06/01 09:49

大概逻辑就是:

第一次外循环:假设第一个值为最小值,和第二个以后的所有值比较大小,如果*有比第一个小的元素,把min设置为该元素的索引,如果有比该元素小的索引,把min设置为另一个更小的元素的索引,这样,第一层外循环过后第一个元素的位置上就是最小的值。

第二次外循环:假设第二个值为次小值,和第三个元素以后的所有值比大小……

privatestaticvoidselectSort(int[] arr) {

      

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

           int min = i;

           for (int j = i+1; j < arr.length; j++) {

              if (arr[j]< arr[min]) {

                  min = j;

              }

           }

           if (i != min){

              int temp =arr[min];

              arr[min] = arr[i];

              arr[i] = temp;

                            

           }

          

       }

    }

  

大概逻辑就是:

外循环表示循环的次数

第一次内循环,依次比较从第一个到最后一个之间相邻的两个元素,如果前面的比后面的元素大,即交换位置这样,第一次外循环后最后一个元素为最大值。

第二次外循环,依次比较从第一个到倒数第二个之间相邻的两个元素,如果前面的比后面的元素大,即交换位置,这样,第二次内循环后倒数第二个元素为次大值。

……     

   privatestaticvoidbuddleSort(int[] arr){

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

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

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

                    int temp = arr[j];

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

                    arr[j+1] = temp;

                }

               

            }

        }

    }

  

   privatestaticvoid insertSort(int[] arr){

       for (int i = 1; i < arr.length; i++) {

           int insertData= arr[i];

           int j = i-1;

           while(insertData< arr[j]){

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

              j--;

              if(j == -1){

                  break;

              }

           }

           arr[j+1] = insertData;

       }

    }

 

0 0
原创粉丝点击