A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 默默呜呜 中级黑马   /  2019-12-24 11:21  /  1107 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 默默呜呜 于 2019-12-24 11:36 编辑

算法之排序一
一、排序
       经典排序:冒泡排序、插入排序、选择排序、归并排序、快速排序、计数排序、基数排序、桶排序。排序算法优越评价有三个指标,执行效率、内存消耗、稳定性,一般来讲,在分析效率时会从几个方面来衡量:
  • 时间复杂度。会从最好、最坏和平均情况三个来分析;
  • 时间复杂度的系数、常数 、低阶。在对同一阶时间复杂度的排序算法性能对比的时候,我们就要把系数、常数、低阶也考虑进来。
  • 比较次数和交换(或移动)次数。
二、 冒泡排序
       冒泡排序是最基本最简单的排序了,基本的思想就是,比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
[Java] 纯文本查看 复制代码
public class demo_sort {
    public static void main(String[] args) {
        //冒泡排序算法
        int[] numbers=new int[]{1,5,8,2,3,9,4};
        int i,j;
        for(i=0;i<numbers.length-1;i++)
        {
            for(j=0;j<numbers.length-1-i;j++)
            {
                if(numbers[j]>numbers[j+1])
                {
                    int temp=numbers[j];
                    numbers[j]=numbers[j+1];
                    numbers[j+1]=temp;
                }
            }
        }
        System.out.println("从小到大排序后的结果是:");
        for(i=0;i<numbers.length;i++)
            System.out.print(numbers[i]+" ");
    }
}
三、 插入排序
       插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
[Java] 纯文本查看 复制代码
public class Insert
{
        public static void main(String[] args)
        {
                int[] ins = {2,3,5,1,23,6,78,34};
                int[] ins2 = sort(ins);
                for(int in: ins2){
                        System.out.println(in);
                }
        }
 
        public static int[] sort(int[] ins){
                
                for(int i=1; i<ins.length; i++){
                        for(int j=i; j>0; j--){
                                if(ins[j]<ins[j-1]){
                                        int temp = ins[j-1];
                                        ins[j-1] = ins[j];
                                        ins[j] = temp;
                                }
                        }
                }
                return ins;
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马