zoukankan      html  css  js  c++  java
  • 插入排序+冒泡排序+选择排序

    插入排序的工作机理和打牌时。整理手中的排做法差点儿相同。在開始摸牌的是,我们的左手是空的,排名朝下放在桌上,接着,一次从桌上摸一张牌,并将它插入左手排的正确位置上。

    为了找到这张牌的正确位置,要将他和手中的没一张哦从右到左进行比較。不管什么时候,左手中的牌都是排好序的。(出自:算法导论)
    比如:5,4,6,2,7,3,4,1
    5—>4,5—>4,5,6—>2,4,5,6—>2,4,5,6,7—->2,3,4,5,6,7—->2,3,4,4,5,6,7—->1,2,3,4,4,5,6,7
    插入排序(InsertSort):

    int InsertSort(int *a,int n){
        //对长度为n的数组,进行插入排序,下标0~n-1
        int i,j,key;
        for(j=1;j<n;j++){
            key=a[j];
            i=j-1;
            while(i>=0&&a[i]>key){//从右到左比較。当前元素大于关键值,当前元素后移
                a[i+1]=a[i];
                i--;
            }
            //i==-1(全部元素后移)||a[i]<=key,key插入到i+1位置
            a[i+1]=key;
        }
        return 0;
    }
    

    冒泡排序:从n開始到下标1每次交换反序的两个相邻元素
    这里仅仅给出第一趟交换:
    5,4,6,2,7,3,4,1—->5,4,6,2,7,3,1,4—>5,4,6,2,7,1,3,4—>5,4,6,2,1,7,3,4—>5,4,6,1,2,7,3,4—>5,4,1,6,2,7,3,4—>5,1,4,6,2,7,3,4—>1,5,4,6,2,7,3,4

    冒泡排序(BubbleSort):

    /**
     *调用函数的方式BubbleSort(A,n):排序数组A[1..n];
     *这里给出的都是递增排序
     */
    int BubbleSort(int *A,int n){
        for(int i=1;i<=n;i++){
            for(int j=n;j>=1;j--){//这里必须从n--1。想想是为什么?
                if(A[j]<A[j-1]) swap(A[j-1],A[j]);
            }
        }
        return 0;
    }

    选择排序:每次选出剩余数中最小的数放在适当的位置,这里指的是升序排序,对每个A[i],比較i+1—>n的全部元素。将小于A[i]的与A[i]交换位置。
    这里仅仅给出第一趟选择:
    5,4,6,2,7,3,4,1—->4,5,6,2,7,3,4,1—->4,5,6,2,7,3,4,1—->2,5,6,4,7,3,4,1—->2,5,6,4,7,3,4,1—>2,5,6,4,7,3,4,1—->2,5,6,4,7,3,4,1—->2,5,6,4,7,3,4,1—>1,5,6,4,7,3,4,2

    选择排序(SelectionSort):

    /**
     *调用函数的方式SelectionSort(A,n):排序数组A[1..n];
     *这里给出的都是递增排序
     */
    int SelectionSort(int *A,int n){
        for(int i=1;i<=n;i++){
            for(int j=i+1;j<=n;j++){
                if(A[j]<A[i]) swap(A[j],A[i]);
            }
        }
        return 0;
    }
  • 相关阅读:
    ES6笔记
    JavaScriptOOP (三)
    JavaScriptOOP(二)
    JavaScriptOOP(一)
    基于vue-cli 将webpack3 升级到 webpack4 配置
    JavaScript 中 call,apply 和 bind
    vue 2.6 更新变动
    JavaScript严格模式
    vue 修饰符 整理
    webpack打包将配置文件单独抽离不压缩打包
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7221899.html
Copyright © 2011-2022 走看看