首页 > 编程语言 > 详细

【学习笔记】C语言习题:用冒泡法和选择法从小到大排列整数

时间:2020-05-07 01:47:39      阅读:38      评论:0      收藏:0      [点我收藏+]

冒泡法:假设有n个数,在每趟中通过在前 n-i+1 项( i 为当前趟数)对比相邻数n-1次将最大数沉底(即放到最后),n-1趟结束后即可得到排列好的数列。

代码如下:

//冒泡法排列10个数
#include<stdio.h>
#define SIZE 10
void rank(int *num){
    int temp;
    for(int i=0;i<SIZE-1;i++){
        for(int j=0;j<SIZE-i;j++){
            if(*(num+j)>*(num+j+1)){
                temp=*(num+j);
                *(num+j)=*(num+j+1);
                *(num+j+1)=temp;
            }
        }
    }
}

int main(){
    int a[SIZE]={0};
    puts("请输入10个数:");
    for(int i=0;i<SIZE;i++) 
        scanf("%d",&a[i]);
    rank(a);
    for(int i=0;i<SIZE;i++) 
        printf("%d ",a[i]);
    printf("\n");
    return 0;
}

选择法:假设有n个数,每趟中找出前 n-i+1 项( i 为当前趟数)中最小数并与第 i 个数交换,n-1趟结束后即可得到排列好的数列。

代码如下:

#include<stdio.h>
#define SIZE 10
void rank(int *num){
    int temp,*min;
    for(int i=0;i<SIZE-1;i++){
        min=num+i;
        for(int j=i+1;j<SIZE;j++){
            if(*min>*(num+j))
                min=num+j;
        }
        temp=*min;
        *min=*(num+i);
        *(num+i)=temp;
    }
}

int main(){
    int a[SIZE]={0};
    puts("请输入10个数:");
    for(int i=0;i<SIZE;i++) 
        scanf("%d",&a[i]);
    rank(a);
    for(int i=0;i<SIZE;i++) 
        printf("%d ",a[i]);
    printf("\n");
    return 0;
}

 

【学习笔记】C语言习题:用冒泡法和选择法从小到大排列整数

原文:https://www.cnblogs.com/adesoe/p/12839938.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!