java实现经典排序算法及复杂度稳定性分析

排序

package com.example.singleton;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

import java.util.Arrays;

public class MainActivity extends AppCompatActivity {
    int[] arry = {29, 26, 88, 69};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.tv_test).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                bubbleSort(arry);
                insertSort(arry);
                choiceSort(arry);
            }
        });


    }

    /**
     * 冒泡排序
     * 基本思想 在要排序的一组数中 对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒
     * 每当两个相邻的数比较后发现他们的排序与排序要求相反时 就将他们互换
     *
     * @author zanyang
     * created at 2017/7/19 15:47
     */
    public static int[] bubbleSort(int[] arry) {

        for (int i = 0; i < arry.length; i++) {
            for (int j = i; j < arry.length - i - 1; j++) {
                if (arry[j] > arry[j + 1]) {
                    int temp = arry[j];
                    arry[j] = arry[j + 1];//交换顺序 大的在后小的在前
                    arry[j + 1] = temp;
                }
            }

        }

        DebugLog.e(">>>>>>>>>>>>>>>"+ Arrays.toString(arry));
        return arry;

    }

    /**
     * 插入排序
     *
     * @author zanyang
     * created at 2017/7/19 17:43
     */
    public static int[] insertSort(int[] arry) {
        // TODO: 2017/7/19 从数组第二位开始,第一位为初始排好的顺序
        for (int i = 1; i < arry.length; i++) {
            int temp = arry[i];// TODO: 2017/7/19 保存待插入的数值
            int j = i - 1;// TODO: 2017/7/19 当前数值的前一位数组角标
            for (j = i - 1; j >= 0; j--) {
                if (arry[j] > temp) {
                    arry[j + 1] = arry[j];// TODO: 2017/7/19 将前一位数值移动一位
                } else {
                    break;
                }
            }
            arry[j + 1] = temp;

        }
        DebugLog.e(">>>>>>>>>>>>>>>"+ Arrays.toString(arry));
        return arry;
    }

    /**
     * 选择排序
     * 思想  在要排序的一组数中,选出最小的一个数与第一个位置的数交换
     * 在剩下的数当中再找最小的与第二个位置的数交换 如此循环到 倒数第二个数和最后一个数比较为止
     *
     * @author zanyang
     * created at 2017/7/19 18:07
     */
    public static int[] choiceSort(int[] arry) {
        for (int i = 0; i < arry.length; i++) {
            int low = i;
            for (int j = i + 1; j < arry.length; j++) {
                if (arry[j] < arry[low]) {
                    low = j;  // 当前最小值位置
                }
            }
            int temp = arry[i];
            arry[i] = arry[low];
            arry[low] = temp;

        }

        DebugLog.e(">>>>>>>>>>>>>>>"+ Arrays.toString(arry));
        return arry;
    }

    /**
     * 快速排序
     * 基本思想  选择一个基准元素 通常选择第一个元素或者hi最后一个元素 通过一趟扫描 将待排序列分成两个部分  一个部分比基准元素小  一部分大于等于基准元素 此时基准元素在其排好序后
     * 的正确位置 然后再用相同的方法递归排序划分的两部分
     *
     * @author zanyang
     * created at 2017/7/20 15:40
     */

    public static int[] quickSort(int[] arry){

        return arry;
    }

}



复杂度 O() 读 欧恩

平均时间复杂度比较:
冒泡:O(n^2)
插入:O(n^2)
选择:O(n^2)
快排:O(nlgn)
稳定性:
冒泡:稳定
插入:稳定
选择:不稳定
快排:不稳定

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

推荐阅读更多精彩内容

  • 本文分析冒泡、选择、插入、希尔、快速、归并和堆排序,为不影响阅读体验,将关于时间、空间复杂度和稳定性的概念放在博文...
    DeppWang阅读 427评论 0 2
  • 大家知道,数字是一种数学符号,它最基本的特点就是客观精确。它在数学以外的应用,比如在各种文章、包括宣传文案里,主要...
    春雨心理321阅读 698评论 0 1
  • 第一天到昆明,我刚走出站台,就下起了大暴雨,把我淋成了只落汤鸡,内心喜悦的小火种也随之被浇灭。因为这次我们...
    阿明猪仔阅读 457评论 8 7
  • Jekyll is a simple, blog-aware, static site generator. It...
    qwfys阅读 515评论 0 0