Java基础进阶-选择排序,冒泡排序,插入排序对数据进行排序

/*

  • 要求:
  • 用三种方法对int[] arr = {6,34,5,1,8,14,3,15,21}进行排序
  • 第一种:冒泡排序
  • 思路:
    第一步:比较相邻的元素。如果第一个比第二个大,就交换它们两个;
    第二步:对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
    第三步:针对所有的元素重复以上的步骤,除了最后一个;
    第四步;重复步骤1~3,直到排序完成。
  • 第二种:选择排序
    第一步:初始状态:无序区为R[1…n],有序区为空;
    第二步;第i趟排序(i=1,2,3…n-1)开始时,当前有序区和无序区分别为R[1…i-1]和R(i…n)。
    该趟排序从当前无序区中-选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,
    使R[1…i]和R[i+1…n)分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区;
    第三步:n-1趟结束,数组有序化了。
  • 第三种:插入排序
    思路:
    第一步:从第一个元素开始,该元素可以认为已经被排序;
    第二步:取出下一个元素,在已经排序的元素序列中从后向前扫描;
    第三步:如果该元素(已排序)大于新元素,将该元素移到下一位置;
    第四步:重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
    第五步:将新元素插入到该位置后;
    重复步骤2~5。
  • */
    上代码…
public class ArraySortWay {
    public static void main(String[] args) {
        int[] arr1 = {6,34,5,1,8,14,3,15,21};
        int[] arr2 = {6,34,5,1,8,14,3,15,21};
        int[] arr3 = {6,34,5,1,8,14,3,15,21};
        //选择排序
        selectionSort(arr1);
        //冒泡排序
        bubbleSort(arr2);
        //插入排序
        insertionSort(arr3);

    }

    //冒泡排序法
    private static void bubbleSort(int[] arr) {
        for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr.length-i-1;j++){
                if(arr[j]>arr[j+1]){
                    int tmep = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = tmep;
                }
            }
        }
        System.out.println("冒泡排序开始.....");
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+" ");
        }
        System.out.println();
    }

    //选择排序
    private static void selectionSort(int[] arr) {
        int MinIndex,tem;
        for(int i=0;i<arr.length-1;i++){
            MinIndex = i;
            for(int j=i+1;j<arr.length;j++){
                if(arr[MinIndex]>arr[j]){
                    MinIndex = j;
                }
            }
            if(MinIndex!=i){
                tem = arr[MinIndex];
                arr[MinIndex] = arr[i];
                arr[i]=tem;
            }
        }
        System.out.println("选择排序开始.....");
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+" ");
        }
        System.out.println();
    }


    //插入排序
    private static void insertionSort(int[] arr) {
        int preIndex ,current;
        for(int i =1;i<arr.length;i++){
            preIndex = i-1;
            current = arr[i];
            //在已排好序的i-1个元素的数组中,如果a[i]的值小于a[i-1]的值,那么把a[i-1]的值
            // 往后移一位,然后赋值给a[i],在比较a[i-2]的值,循环下去,直到找到a[i]>a[preIndex]或者
            //preIndex<0,找到当前a[preIndex]>a[i]的preIndex,把它放在preIndex+1的位置。
            while(preIndex>=0 && arr[preIndex]>current){
                arr[preIndex+1]=arr[preIndex];
                preIndex--;
            }
            arr[preIndex+1]=current;
        }
        System.out.println("插入排序开始....");
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+" ");
        }
        System.out.println();
    }

}

在这里插入图片描述

发布了18 篇原创文章 · 获赞 16 · 访问量 380

猜你喜欢

转载自blog.csdn.net/lierenbiji21/article/details/105383980
今日推荐