• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
云飞
博客园    首页    新随笔    联系   管理    订阅  订阅

简单排序算法

排序是项目中经常使用的算法,下面简单说一下三种简单排序

1. 选择排序,选择排序应该是所有排序算法中最直接最简单的排序,经过N-1趟比较好,序列形成有序列表,具体算法是,每一趟找到最大或者最小值,之后交换,依次循环n-1次,所有时间复杂度未O(n2)

实现:

public static void selectSort(int[] arr) {
        long start = System.currentTimeMillis();
        for (int i = 0; i < arr.length - 1; i++) {
            int min_index = i;
            for (int j = i + 1; j < arr.length; j++) {
                // find index of min value
                if(arr[min_index]>arr[j]) min_index = j;
            }
            // swap
            if(min_index != i){
                int tmp = arr[i];
                arr[i] = arr[min_index];
                arr[min_index] = tmp;
            }
        }
        System.out.printf("简单排序算法\t运行时间%dms\n",(System.currentTimeMillis() - start));
    }

 

2.冒泡排序,冒泡是一种经典排序算法,每一趟当前值都会和相邻元素比较,每趟结束后就后最大/最小值就会浮出水面,经过n-1次迭代之后,数组有序

算法:

public static void bubbleSort(int[] arr){
        long start = System.currentTimeMillis();
        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 tmp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = tmp;
                }
            }
        }
        System.out.printf("冒泡算法\t运行时间%dms\n",(System.currentTimeMillis() - start));
    }

 

3. 直接插入排序,插入排序是每一步将待排序元素插入到前面已排好序序列中,知道插入完成

public static void insertSort(int[] arr){
        long start = System.currentTimeMillis();
        for (int i = 1 ;i< arr.length;i++){
            int j = i;
           while (j > 0 && arr[j] < arr[j-1]){
               int tmp = arr[j];
               arr[j]= arr[j-1];
               arr[j-1] = tmp;
               j--;
           }
        }
        System.out.printf("直接插入算法\t运行时间%dms\n",(System.currentTimeMillis() - start));
    }

 

posted @ 2017-11-24 13:29  映日荷花别样红  阅读(219)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3