美文网首页工作生活
排序算法 (归并+选择) --java

排序算法 (归并+选择) --java

作者: 楊柯林 | 来源:发表于2019-07-01 23:29 被阅读0次

排序算法 第一篇

1 归并排序

采用递归思想
将数组采用递归思想分为两部分,两部分再细分

    public static void merge(int[] arr,int low,int high){
        int middle =(high+low)/2;
        if(low<high){
//            处理左边
            merge(arr,low,middle);
//            处理右边
            merge(arr,middle+1,high);
//            归并
            mergeSort(arr,low,middle,high);
        }

    }

    private static void mergeSort(int[] arr,int low,int middle,int high) {

        //用于存储归并后的临时数组
        int[] temp=new int[high-low+1];
//        记录第一个数组中需要遍历的下标
        int i=low;
//        记录第二个数组中需要遍历的下标
        int j=middle+1;
//        用于记录在临时数组中存放的下标
        int index=0;
//        遍历两个数组,取出小的数字,放入临时数组中
        while (i<=middle&&j<=high){
            if(arr[i]<=arr[j]){
//                把小的数据放入临时数组中
                temp[index]=arr[i];
//                让下标向后移一位
                i++;
            }else {
                temp[index]=arr[j];
                j++;
            }
            index++;
        }
        while (j<=high){
            temp[index]=arr[j];
            j++;
            index++;
        }
        while (i<=middle){
            temp[index]=arr[i];
            i++;
            index++;
        }
//        临时数组中数据重新存入原数组
        for (int k = 0; k < temp.length; k++) {
            arr[k+low]=temp[low];
        }
    }

2 选择排序

每次遍历取出最小的,然后排好的最小的前一组去和后面进行比较拿出最小的

//    选择排序
    private static void selectSort(int[] arr) {
//        遍历所有的数
        for(int i=0;i<arr.length;i++){
            int minIndex=i;
//            把当前遍历的数和后面所有的数进行比较,记录最小数的下表
            for (int j = i; j < arr.length; j++) {
                if (arr[minIndex] > arr[j]) {
//                    记录下最小数的下标
                    minIndex=j;
                }
            }
//            如果最小数和当前遍历数下标不一致,说明找到了更小的数
            if(i!=minIndex){
                int temp=arr[i];
                arr[i]=arr[minIndex];
                arr[minIndex]=temp;
            }
        }
    }

相关文章

  • 十大经典排序算法(java实现)

    前言 本文我们将以java代码实现十大经典排序算法,包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序...

  • 盘点常用Java排序算法

    本文主要介绍Java的七种常见排序算法的实现,对选择排序、插入排序、冒泡排序、归并排序、快速排序、希尔排序、最小堆...

  • 盘点常用Java排序算法

    本文主要介绍Java的七种常见排序算法的实现,对选择排序、插入排序、冒泡排序、归并排序、快速排序、希尔排序、最小堆...

  • 排序算法-堆排序

    参考: Java排序算法(五):堆排序 【算法与数据结构】图说堆排序 【数据结构】排序算法:希尔、归并、快速、堆排...

  • 基本排序算法

    冒泡算法 简单选择排序 堆排序 快排 归并排序

  • 排序学习 - 为了面对算法面试(2)

    排序学习 - 为了面对算法面试(1) - 选择排序/冒泡排序/插入排序 4.归并排序:归并排序(MERGE-SOR...

  • 算法 第二章第二部分笔记

    各种排序算法的性能特点 选择排序 插入排序 希尔排序 归并排序 本地归并排序 自底向上的归并排序 快速排序 三向切...

  • 排序算法的实现

    用java对常用内部排序算法的实现。 对冒泡排序,简单选择排序,直接插入排序,希尔排序,归并排序的简单实现(缺少快...

  • 排序题

    公共函数 选择排序 冒泡排序 插入排序 快速排序 归并排序——迭代算法

  • 排序算法 (归并+选择) --java

    排序算法 第一篇 1 归并排序 采用递归思想将数组采用递归思想分为两部分,两部分再细分 2 选择排序 每次遍历取出...

网友评论

    本文标题:排序算法 (归并+选择) --java

    本文链接:https://www.haomeiwen.com/subject/fhlncctx.html