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

    冒泡排序

    //冒泡排序
    /*
    每两个数之间做比较:较大的数放到右边,循环下去;就能够把最大的数字换到数组最后面
    然后数组长度--
    再两个数之间作比较。。。。。 
    */ 
    
    void bubble(int a[],int n)
    {
        for(int i=0;i<n-1;i++)//注意a[n-1]为数组的最后一项,没有数字和他做比较,故i<n-1 
        {
            if(a[i]>a[i+1])
                a[i]=a[i]+a[i+1]-(a[i+1]=a[i]);
        }
    }
    void bubbleSort(int a[],int n)
    {
        while(n>0)
            bubble(a,n--);
    }
    int main(){
        int a[7]={7,2,1,3,6,5,4};
        int n=7;
        bubbleSort(a,n);
        for(int i=0;i<n;i++)
            printf("%d	",a[i]);
    } 

    选择排序

    //选择
    /*
    选择排序就像是军训的时候按高矮个站队:
    先在数组中挑出一个最高个和队伍最后面的同学换位置
    然后排除最高个
    再在剩余的同学里面挑最高个和倒数第二个交换 
    然后再排除最高个和次高个
    再在剩余的同学里面挑最高个和倒数第三个交换
    。。。。。。 
    */ 
    int selectPos(int a[],int n)
    {
        int pos=0;
        int max=a[0];
        for(int i=0;i<n;i++)
        {
            if(max<a[i])
            {
                max=a[i];
                pos=i;
            }
        }
        return pos;
    }
    void selectionSort(int a[],int n)
    {
        while(n>0)
        {
            int pos=selectPos(a,n);
            a[n-1]=a[pos]+a[n-1]-(a[pos]=a[n-1]);
            n--;
        }
    }
    int main(){
        int a[7]={7,2,1,3,6,5,4};
        int n=7;
        selectionSort(a,n);
        for(int i=0;i<n;i++)
            printf("%d	",a[i]);
    } 

    插入排序

    //插入排序
    /*
    插入排序就像是你在斗地主:
    当你抽到一张牌的时候,自然就需要往你现在的牌堆里面插入:方便你下一步打顺子
    比如你抽到5的时候,自然就会往小于6的数字的位置放
    这是一个总体的思想,现在开始拆分插入的过程:
    首先明确:当数组中有1个数的时候是不需要排序的,所以for循环是从1开始的
    (也就是对两个以上的数排序)
    设当前接收到的数组的最后一个数字位key,拿数组中每一个数字和key作比较,当发现有小于
    key的关键字时,就往数组里面插入 
    */ 
    void insert(int a[],int n)
    {
        int key=a[n];
        while(a[n-1]>key)
        {
            a[n]=a[n-1];
            n--;
            if(n==0)
                a[n]=key;
        }
        a[n]=key;
    }
    void insertSort(int a[],int n)
    {
        for(int i=1;i<n;i++)//当数组中只有一个数时,默认有顺序的 
            insert(a,i);
    }
    int main(){
        int a[7]={7,2,1,3,6,5,4};
        int n=7;
        insertSort(a,n);
        for(int i=0;i<n;i++)
            printf("%d	",a[i]);
    } 
  • 相关阅读:
    中缀表达式std
    后缀表达式
    取石头游戏
    LeetCode404Sum of Left Leaves左叶子之和
    LeetCode387First Unique Character in a String字符串中第一个唯一字符
    简单排列习题2.5 的 2
    周期串Uva455 P37 3-4
    【递归】分形
    【递归】普通递归关系(矩阵快速幂)
    P3486 [POI2009]KON-Ticket Inspector
  • 原文地址:https://www.cnblogs.com/oldfish123/p/13073168.html
Copyright © 2011-2022 走看看