zoukankan      html  css  js  c++  java
  • 三大排序

    冒泡排序:

    (外围只需遍历n-1次,最后一个元素自动就排好了)

    基本思想:两个数比较大小,较大的数下沉,较小的数冒起来。
    过程:
    1、比较相邻的两个数据,如果第二个数小,就交换位置。
    2、从后向前两两比较,一直到比较最前两个数据。最终最小数被交换到起始的位置,这样第一个最小数的位置就排好了。

    或者

    3,从前往后,两两比较,最终最大的到了末尾位置,这样第一个最大数就排好了
    4、继续重复上述过程,依次将第2.3…n-1个最小数排好位置。

    for(int i = 0;i < a.length-1 ;i++){ 
                for (int j = a.length - 1; j > i; j--) {
                    if (a[j] < a[j - 1]) {
                        int t = a[j];
                        a[j] = a[j - 1];
                        a[j - 1] = t;
                    }
                }
            }

    选择排序:(外围只需遍历n-1次,最后一个元素自动就排好了)

    每遍历一次都记住了当前最小元素的位置,最后仅需一次交换操作即可将其放到合适的位置。
    过程:
    1、(假定第一个数最小)在长度为N的无序数组中,第一次遍历n-1个数,找到最小的数值与第一个元素交换;
    2、第二次遍历n-2个数,找到最小的数值与第二个元素交换;
    3、第n-1次遍历,找到最小的数值与第n-1个元素交换,排序完成。

    int[] a = {3,4,1,2,5}; 
            int temp = 0;
            for(int i=0;i<a.length-1;i++){
                int min = i;            //记录最小值的下标
                for(int j=i+1;j<a.length;j++){
                    if(a[j]<a[min]){
                        min = j;      //交换下标
                    }
                }
                if(min != i){       //如果最小值不是i,就把值进行交换
                    temp = a[i];
                    a[i] = a[min];
                    a[min] = temp; 
                }
            }

    插入排序:用的增量法

    打个比方:打牌

    牌堆里的是无序,手上的有序,抓牌时与手上的牌进行比较(从左到右,从小到大),再插入。(即分成两个区间,一个有序,一个无序)

    第一张牌不用排!

            int[] a = {3,4,1,2,5}; 
            
            for(int i=1;i<a.length;i++){  //抓牌
                int temp = a[i];     //要抓的牌交给一个变量
                int j= 0;
                for( j=i-1;j>=0 && a[j]>temp;j--){   //码牌
                    a[j+1] = a[j];
                    
                }
                a[j+1] = temp;
            }
  • 相关阅读:
    redhat7 安装 mysql5.7
    python django 网站局域网问
    SQLiteStudio
    升级gcc到gcc-8.1.0
    [SAP HANA ]fulltext index
    [ORACLE] SNC 学习
    [oracle]sqlplus 输出格式化print_table学习
    win-->linux 文本转换
    [ORACLE]ORA-03113: end-of-file on communication channel
    ORACLE 在线重定义分区表
  • 原文地址:https://www.cnblogs.com/wskb/p/10962699.html
Copyright © 2011-2022 走看看