当前位置 主页 > 网站技术 > 代码类 >

    Java冒泡排序法和选择排序法的实现

    栏目:代码类 时间:2019-09-12 11:05

    冒泡排序法和选择排序法

    本人学生党一枚。Java学习过程,写这个博客纯属当复习,有什么错误的地方请大家指出来在评论里指点指点我。谢谢

    冒泡排序法

    概念:

    从前向后(或从后向前)依次比较相邻的元素,若发现逆顺序,则交换。小的向前换,大的向后换,像水底的气泡逐渐向上冒,顾名思义冒泡排序法。

    通俗一点就是把大的往上挪!向冒泡一样。

    是交换式排序法的一种。冒泡排序法效率较低。

    冒泡过程

    冒泡排序法思路

    1:外层循环:控制它要走几次。
    假设你有5个数,那就要走4次,最后一次不用走,最后那个数已经在它位置了所以就要length-1次。
    2:内层循环:控制逐一比较,如果发现前一个数比后一个数大,则交换。
    注意!因为越比较长度就越小了,所以长度要length-1-i。

    package com.test_1;public class Demo5_3 {  public static void main(String[] args) {    // TODO Auto-generated method stub    int arr [ ] ={1,6,0,-1,9};    int temp=0;//中间值    //-------冒泡排序法    //外层循环,它决定一共走几趟    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]) {          //换位          temp = arr[j];          arr[j] = arr[j+1];          arr[j+1] = temp;        }      }    }    //输出结果    for(int i = 0;i<arr.length;i++){      System.out.print(arr[i]);    }  }}

    选择排序法

    概念:
    第一次从R[0]~R[n-1]中选取最小值,与R[0]交换。第二次从R[1]~R[n-1]中选取最小值与R[1]交换。。。以此类推。
    通俗点说就是每次找到后面元素的最小值然后与之交换。
    选择排序法效率中。

    选择排序过程

    选择排序思路
    1:外层循环:要走几趟,同样是length-1。
    2:设置一个最小值。假设第一个就是最小值。
    3:设置一个最小值下标
    4:内层循环:那你当前的最小值去逐一比较。当有比当前最小值小的数时,记录最小值,记录下标。
    5:退出内层循环后就交换位置。

    package com.test_1;public class Demo5_3 {  public static void main(String[] args) {    //简单测试数组    int arr [ ] ={1,6,0,-1,9,1000,-1000,98,-687};    //调用选择排序法    Select select = new Select();    select.sort(arr);  }}//--------------选择排序法class Select{  public void sort(int arr[]){    //中间值    int temp = 0;    //外循环:我认为最小的数,从0~长度-1    for(int j = 0; j<arr.length-1;j++){      //最小值:假设第一个数就是最小的      int min = arr[j];      //记录最小数的下标的      int minIndex=j;      //内循环:拿我认为的最小的数和后面的数一个个进行比较      for(int k=j+1;k<arr.length;k++){        //找到最小值        if (min>arr[k]) {          //修改最小          min=arr[k];          minIndex=k;        }      }      //当退出内层循环就找到这次的最小值      //交换位置      temp = arr[j];      arr[j]=arr[minIndex];      arr[minIndex]=temp;    }    //输出结果    for(int i = 0;i<arr.length;i++){      System.out.print(arr[i]+"  ");    }  }}