zoukankan      html  css  js  c++  java
  • CPrimerPlus第十一章中的“选择排序算法”学习

    C Primer Plus第十一章字符串排序程序11.25中,涉及到“选择排序算法”,这也是找工作笔试或面试可能会遇到的题目,下面谈谈自己的理解。

    举个例子:对数组num[5]={3,5,2,1,4}中各元素进行从小到大的排序并输出(为了更清楚了解排序过程,要求输出每一轮排序后的结果)。

    附上程序(写的有点复杂,主要代码只有几行):

    /* 对一个整数数组中的元素从小到大排序 */
    /************* 选择排序法 *************/
    /********* by行动救赎 2016.9.21********/
    
    
    #include <stdio.h>
    void sort(int *, int);    //数组排序
    void prnt(int *, int);    //数组打印
    
    /*****************主函数******************/
    int main(void)
    {
        int num[5] = {3,5,2,1,4};
    
        sort(num, 5);
    
        return 0;
    }
    
    /*****************排序函数******************/
    void sort(int * num, int n)
    {
        int i, temp;
        int top, seek;
    
        printf("
    第%d次结果:", 0); 
        prnt(num, n);
        for (top=0; top<n-1; top++)
        {
            for(seek=top+1; seek<n; seek++)
            {
                if(num[top] > num[seek])
                {temp=num[top]; num[top]=num[seek]; num[seek]=temp;}
                prnt(num, n);
            }
            printf("
    第%d次结果:", top+1);
            prnt(num, n);
        }
    }
    
    /*****************打印数组******************/
    void prnt(int * num, int n)
    {
        int i;
        for(i=0; i<n; i++)
            printf("%d ", *(num+i));
        printf("
    ");
    }

    1.第一个数和剩下的n-1个数依次比较,遇到比第一个数小的数,就将该数和第一个数交换:3和5比,3<5,不用交换,35214;3和2比,3>2,交换,25314;2和1比,2>1,交换,15324;1和4比较,1<4,不换,15324。

    2.第二个数和剩下的n-2个数依次比较,遇到比第二个数小的数,就将该数和第二个数交换:5<3?,换,13524;3<2?换,12534;2<4?不换,12534。

    3.第三个数和剩下的n-3个数依次比较,遇到比第三个数小的数,就将该数和第三个数交换:5<3?,换,12354;3<4?不换,12354。

    4.第四个数和剩下的n-4个数依次比较,遇到比第四个数小的数,就将该数和第四个数交换:5<4?,换,12345。

    下面是核心思路的代码:

    for (top=0; top<n-1; top++)
        {
            for(seek=top+1; seek<n; seek++)
                if(num[top] > num[seek])
                {temp=num[top]; num[top]=num[seek]; num[seek]=temp;}
        }

    一点浅薄的探究,和大家分享一下。

  • 相关阅读:
    等待通知--wait notify
    表单重复提交与解决
    Cookie Session 与Token
    springMVC实现登陆
    第11章 AOF持久化
    第10章 RDB持久化
    MyBatis动态SQL
    第4章 网络层
    第9章 数据库
    代理设计模式
  • 原文地址:https://www.cnblogs.com/TomLily/p/5891728.html
Copyright © 2011-2022 走看看