美文网首页
C语言实战开发篇-5.2 排序方法

C语言实战开发篇-5.2 排序方法

作者: MRJMORIARTY | 来源:发表于2019-12-03 17:03 被阅读0次

数组的排序方法

1.冒泡排序法
原理:依次从头开始将第一个数和下一个数进行比较,大的往后放,通过依次循环得到最大的数,重复循环该操作直到排序结束。

#include<stdio.h>
int main()
{
    int a[10]={3,0,1,8,7,2,5,4,9,6};
    int i,j,m; 
    for(i=0;i<9;i++){//找到一个最大的数沉底 
    for(j=0;j<10-i;j++){//让j和j+1进行比较 
    if(a[j+1]<a[j]){
    m=a[j];
    a[j]=a[j+1];
    a[j+1]=m;//交换顺序,引入第三变量
}
}
}
    for(i=0;i<10;i++){
    printf("%d",a[i]);
}
return 0;
}
/*冒泡排序实现方式:每次遍历整个数组找到最大的一个数沉底,如果数组有n个元素,第一次遍历n-1次
第二次需要遍历n-2次,直到循环n-1次
第一次循环控制总共遍历多少次
第二层循环控制每次需要遍历多少次才能找到最大
每次从头开始i=0,让i和i+1比较,确保i+1最大 
循环层级最好不多于两个 
一个循环:一次遍历就结束
二个循环:每一次内部又有遍历
 */

2.选择排序法
和冒泡排序类似,只不过是先选择最小的,依次和其他数进行比较,通过交换让值保持最小,这样每一次循环就会得到一个最小的值。

#include<stdio.h>
int main()
{ 
    int a[10]={3,0,1,8,7,2,5,4,9,6},i,j,m;
    for(i=0;i<10-1;i++){ 
        for(j=i+1;j<10;j++){//从i后面找最小的数到i的位置 
        if(a[j]<a[i]){
        m=a[j];
        a[j]=a[i];
        a[i]=m;
        } 
        }
        } 
        for(i=0;i<10;i++){
        printf("%d",a[i]);  
        }
     
return 0;
}
/*选择排序:外层循环控制需要遍历多少次:n-1次
内层循环找到当前最小的数 
*/

3.插入排序法
原理:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入

#include<stdio.h>
int main()
{
    int a[10]={3,0,1,8,7,2,5,4,9,6};
    int i,j,m;
    for(i=0;i<10-1;i++){//外部控制次数
    if(a[i+1]<a[i]){
    m=a[i];
    a[i]=a[i+1];
    a[i+1]=m;   
    for(j=i;j>0;j--){
    if(a[j]>a[j-1]){
    break;//当前位置就是这个数字的位置 
    }
    else{
    m=a[j];
    a[j]=a[j-1];
    a[j-1]=m;//j和j-1换位置 
    } 
    }
    } 
    }
    for(i=0;i<10;i++){
    printf("%d",a[i]);  
    }
return 0;
}

排序方法应用,猜数字

游戏规则:
自动产生4个不重复的由小到大排序的1-9之间的随机数,并用排序方法进行排序。玩家对四个数字进行猜测,猜测的数字数值和位置都正确的情况下A前面的数字加1,猜测的数字数值而位置不正确的情况下B前面的数字加1,结果为4A的时候代表全对!

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
    printf("********\n");
    unsigned int seed=time(NULL);
    srand(seed);
    int i,j,m,random,a[4], aCount = 0,bCount = 0,input[4];
    for(i=0;i<4;i++){
        random=rand()%9+1;
        if(i==0){
            a[i]=random;
        //  printf("%d",a[i]);
        }
        else{
    for(j=0;j<i;j++){
        if(random==a[j]){
        break;
        }   
    }
    if(i==j){
        a[i]=random;
        //printf("%d",a[i]);
    }
    else{
        i--;
    }
    }
    }
    for(i=0;i<3;i++){
    for(j=i+1;j<4;j++){
    if(a[j]<a[i]){
    m=a[j];
    a[j]=a[i];
    a[i]=m;
    }
    }
    }
    for(i=0;i<4;i++){
    printf("%d",a[i]);
    }
    printf("\n");
    printf("********\n");
    
    
    
     //开始游戏
    while(1){
        //提示输入
        printf("请输入猜测的数字:");
        for(int i = 0; i < 4; i++) {
            scanf("%d", &input[i]);
        }
        
        //开始
        //1 5 8 9
        //1 2 3 5
        for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
        if (a[i] == input[j]) {//数字存在 判断位置
        if (i == j){
        aCount++;
        }else{
        bCount++;
        }
        } 
        }
        }
        
        //提示用户结果
        printf("%dA%dB\n", aCount, bCount);
        
        //判断是否正确
        if( aCount == 4){
            printf("全对!!!!\n");
            break;
        }else{
            aCount = 0;
            bCount = 0;
        }
    }

        
return 0;
}

相关文章

  • C语言实战开发篇-5.2 排序方法

    数组的排序方法 1.冒泡排序法原理:依次从头开始将第一个数和下一个数进行比较,大的往后放,通过依次循环得到最大的数...

  • C语言实战开发篇-5.1 编号方法

    define和const的用法 1.定义符号常量符号常量是指程序中符号化的常量,即用一个标识符表示一个常量。在程序...

  • C语言实战开发篇-2 C语言基础

    目标:提高编程能力,形成编程思想,精通JAVA,C语言的使用 C语言和C++的区别 1.C语言面向过程,C++面向...

  • C语言中排序方法的使用

    C语言中排序方法 学习目的 今天我们学习了三种排序方法:冒泡排序法、选择排序法、插入排序法。 相关技术,及其实用 ...

  • 冒泡排序

    C语言的简单排序方法:大数上浮,下数下沉.

  • Laravel-博客实战+踩坑

    最近在学习Laravel,参考的课程是后盾网地Laravel5.2博客项目实战,地址是Laravel 5.2开发实...

  • 算法设计与分析——5.排序与树结构

    5.1 引言 5.2 递归与排序 5.2.1 选择排序 代码 5.1 选择排序的递归实现 代码 5.2 选择排序...

  • 排序

    图解:C语言入门:插入排序(代码实现,而不是排序方法阐述) - Rivival_S 的博客 - CSDN博客 插入...

  • C语言实战开发篇-6 指针

    指针变量的定义 指针变量存储的是地址,通过它能查找到内存单元。如果把计算机内存空间比作一幢公寓,每个存储单元相当于...

  • C语言中的指针与数组

    C语言中的指针与数组 @(C语言)[排序算法, 快速排序, C实现] 引言 相信指针与数组是不少同学在初学C语言时...

网友评论

      本文标题:C语言实战开发篇-5.2 排序方法

      本文链接:https://www.haomeiwen.com/subject/jythgctx.html