排序算法

1、冒泡排序

说明:

1、比较相邻的元素。如果第一个比第二个大,就交换它们两个
2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
3、依次比较,这里注意,比如说第一轮比较完成后,最后一个已经是最大的了,第二轮就不需要在比较了

时间复杂度 暂时空着
代码实现
 public  static int[] sort_maopao(int[] a) {
        
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a.length-1-i; j++) {

                if (a[j] > a[j + 1]) {
                    int temp = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = temp;
                }
            }
        }
        return a;
    }

2、选择排序

说明:

1、首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
2、n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果
3、初始状态:无序区为R[1..n],有序区为空;
4、第一次排序将无序区所有数依次比较,选出最小的放到第一位,这是有序区为R[1],无序区是
R[2.n],在无序区中选出最小的放到第二位,并将第二位的数的下标与最小的数值的下标进行替换

时间复杂度: 暂时空着
代码实现
public  static int[] sort_xuanze(int[] arr) {

        for(int i=0;i<arr.length-1;i++){

            int tmp;
            int minIndex =i;

            for(int j=i+1;j<arr.length;j++){

                if (arr[j]<arr[minIndex]){
                    minIndex=j;
                }
            }
            tmp=arr[i];
            arr[i]=arr[minIndex];
            arr[minIndex]=tmp;
        }
        return arr;
    }

3、插入排序

说明:
1、通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
2、从第一个元素开始,该元素可以认为已经被排序;
3、取出下一个元素,在已经排序的元素序列中从后向前扫描;
4、如果该元素(已排序)大于新元素,将该元素移到下一位置;
5、重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
6、将新元素插入到该位置后;
7、重复步骤3~6。

时间复杂度: 暂时空着
代码实现
  public static int[] sort_charu(int[] arr){

        int len = arr.length;
        int preIndex, current;
        for (int i = 1; i < len; i++) {
            preIndex = i - 1;
            current = arr[i];
            while (preIndex >= 0 && arr[preIndex] > current) {
                arr[preIndex + 1] = arr[preIndex];
                preIndex--;
            }
            arr[preIndex + 1] = current;
        }
        return arr;
    }

4、计数排序

说明:
1、计数排序需要先比较一下所有数的最大值max和最小值min
2、计数排序的时间复杂度是O(n)
3、建立一个数组的长度是max-min+1
4、计数排序对于实数的排序是不可行的,因为1,2之间可能有无限个数
实现代码如下

public static int[] jishu(int[] arr){
        int min=0;  int max=0;int bi=0;
        int[] c;
        int[] b=new int[arr.length];
        //便利所有数,找最大最小值
        for(int i=0;i< arr.length;i++){
            if (arr[i]<min){
                min=arr[i];
            }
            if (arr[i]>max){
                max=arr[i];
            }
        }
        c=new int[max-min+1];
        //遍历原数组,c数组下表的值即arr[i]-min
        for (int i=0;i<arr.length;i++){
            c[arr[i]-min]++;
        }
       //将c数组遍历,将结果放到b数组
        for(int i=0;i<c.length;i++){
            while (c[i]>0){
                b[bi]=i+min;
                c[i]--;
                bi++;
            }
        }
        return b;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容

  • 写在前边:这篇文章又臭又长,纯属个人无聊总结之作,如果您恰好看见了,有恰好有兴趣,建议您找个空闲时间阅读。 [TO...
    John_Tsemin阅读 2,518评论 2 5
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,183评论 0 52
  • 排序算法基础 排序算法,是一种能将一串数据按照特定的排序方式进行排列的一种算法,一个排序算法的好坏,主要从时间复杂...
    jackyshan阅读 3,945评论 3 11
  • 前几天参加一个会,一个同事做了提案,听着听着,忽然有一种感觉。 提案的内容对自己来说并不陌生,可似乎当时这个阶段自...
    皮皮老猫阅读 417评论 0 2
  • 未曾哭过长夜的人,不足以语人生。 —— 歌德。每个人都有柔软的时候,也都有柔软的一部分。 看清楚这个世界,并不能让...
    心香很多瓣阅读 324评论 1 9