zoukankan      html  css  js  c++  java
  • C语言冒泡排序法

     代码:

    #include <stdio.h>
    #include <string.h>
    
    #define NAME_LENGTH 256
    #define PERSON_COUNT 3
    struct Person {
        char name[NAME_LENGTH];
        int moneyNum;
    };
    
    void inputPersonsInfo(struct Person* persons)
    {
        int i = 0;
        for(; i<PERSON_COUNT; ++i){
            scanf("%s %d", persons[i].name, &(persons[i].moneyNum));//name本来就是地址,不用取地址符号
        }
    }
    
    void sortByMoneyNum(struct Person* persons)
    {
        struct Person tPerson;
        int i, j;
        for(i=0; i<(PERSON_COUNT-1); ++i){
            for(j=0; j<(PERSON_COUNT-i-1); ++j){
                memset(&tPerson, 0, sizeof (tPerson));
                if(persons[j].moneyNum > persons[j+1].moneyNum){
                    memcpy(&tPerson, &persons[j], sizeof(tPerson));
                    memcpy(&persons[j], &persons[j+1], sizeof(tPerson));
                    memcpy(&persons[j+1], &tPerson, sizeof(tPerson));
                }
            }
        }
    }
    
    int main(int argc, char* argv[])
    {
        struct Person persons[PERSON_COUNT];
        (void)inputPersonsInfo(persons);
        (void)sortByMoneyNum(persons);
        int i=0;
        for(; i<PERSON_COUNT; ++i){
            printf("%d %s
    ", persons[i].moneyNum, persons[i].name);
        }
        return 0;
    }

     以从小到大的排序举例,所谓的冒泡法,就是如下过程:

     第1次:将列表里第1大的数字冒泡到倒数第1的位置;

     第2次:将列表里第2大的数字冒泡到倒数第2的位置;

     第3次:将列表里第3大的数字冒泡到倒数第3的位置;

     ...

     第n-1次:将列表里第n-1大的数字冒泡到倒数第n-1的位置;

     而不需要做第n次冒泡,因为剩下的就是最后一个数,就是最小的,并且位置是在最左边。

     根据这个概念看上面代码,核心就是上面两句话:

    for(i=0; i<(PERSON_COUNT-1); ++i){
        for(j=0; j<(PERSON_COUNT-i-1); ++j){
             //exchange      
        }
    } 

    第一个循环是要找多少次最值【已经找到了的不算】,一共需要找n-1次,最后一个值不需要再判断,已经是最值了;

    第二个循环,是找每个最值的时候,需要冒泡多少次,即从第0个开始,一直冒泡到合适的地方,找第i个最值,要把这个值放在n-1-i的位置。




    长风破浪会有时,直挂云帆济沧海!
    可通过下方链接找到博主
    https://www.cnblogs.com/judes/p/10875138.html
  • 相关阅读:
    php数组
    php数组排序
    php超级全局变量
    php循环
    php函数
    PHP魔术常量
    php面向对象
    static 关键字
    Final 关键字
    内置函数
  • 原文地址:https://www.cnblogs.com/judes/p/15018099.html
Copyright © 2011-2022 走看看