开发者社区> 问答> 正文

C语言用冒泡法和选择法对10个数进行排序

C语言用冒泡法和选择法对10个数进行排序

展开
收起
知与谁同 2018-07-22 10:19:35 2432 0
4 条回答
写回答
取消 提交回答
  • 阿里云开发者社区运营负责人。原云栖社区负责人。
    #include <stdio.h>
    void main()
    {
    int a[9],i,j,max,t;
    for(i = 0;i < 9;i++)
    {
    printf("a[%d]=",i);
    scanf("%d",&a[i]);
    }
    for(j = 0;j < 9;j++)
    {
    for(i = 0;i < 9-j-1;i++)
    {
    if(a[i] > a[i+1])
    {
    t = a[i];
    a[i] = a[i+1];
    a[i+1] = t;
    }
    }
    }
    for(i = 0;i < 9;i++)
    printf("%d ",a[i]);
    }
    2019-07-17 22:49:55
    赞同 展开评论 打赏
  • 12535
    i n t a [ 1 0 ] = { 1 , 2 , 5 , 3 , 4 , 7, 6 , 9 , 8 , 0 } ;
    i n t t e m p , i , j , k ;
    / / 冒 泡 法 从 大 到 小 排 序
    f o r ( i = 0 ; i < 1 0 - 1 ; i + + ) {
    f o r ( j = 0 ; j < n - i ; j + + ) {
    i f ( a [ j + 1 ] > a [ j ] ) {
    t e m p = a [ j ] ;
    a [ j ] = a [ j + 1 ] ;
    a [ j + 1 ] = t e m p ;
    }
    }
    }
    / / 选 择 法 从 大 到 小 排 序
    f o r ( i = 0 ; i < 1 0 - 1 ; i + + ) {
    k = i ;
    f o r ( j = i + 1 ; j < 1 0 ; j + + )
    i f ( a [ j ] > a [ k ] ) k = j ;
    i f ( k ! = i ) {
    t e m p = a [ i ] ;
    a [ i ] = a [ k ] ;
    a [ k ] = t e m p ;
    }
    }
    不就排个序吗,搞的这么复杂
    2019-07-17 22:49:55
    赞同 展开评论 打赏
  • 选择排序算法C语言的实现
    选择法排序原理:一次选定数组中的每一个数,记下当前位置并假设它是从当前位置开始后面数中的最小数min=i,从这个数的下一个数开始扫描直到最后一个数,并记录下最小数的位置min,扫描结束后如果min不等于i,说明假设错误,则交换min与i位置上数。 具体实现代码如下:
    #include<stdio.h>
    /****************************************
    **选择排序法对十个整数进行排序 ***
    ****************************************/
    //n为数组长度;
    void sort(int a[],int n)
    {
    int temp,min;
    for(int i=0;i<n;i++)
    {
    min=i;//先假设最小下标为i
    for(int j=i+1;j<n;j++)
    if(a[j]<a[min])
    min=j;//对i之后的数进行扫描将最小的数赋予min
    if(min!=i)
    {
    temp=a[i];
    a[i]=a[min];
    a[min]=temp;
    }//判断min与i是否相等,若=则说明原假设正确反之交换数值
    }
    }
    //用main函数验证
    void main()
    {
    int a[10];
    printf("please input the array a:\n");
    for(int i=0;i<10;i++)
    scanf("%d",&a[i]);
    sort(a,10);

    for(i=0;i<10;i++)
    printf("%d\t",a[i]);
    }
    冒泡排序法
    char array[5]={'2','3','4','1','6'};
    int i;
    int j;
    char temp;
    int k;

    for(i=0;i<5;i++)
    {

    for(j=0;j<4-i;j++)
    {
    if(array[j]>array[j+1])
    {
    temp=array[j];
    array[j]=array[j+1];
    array[j+1]=temp;
    }
    }

    }
    2019-07-17 22:49:55
    赞同 展开评论 打赏
  • TA有点害羞,没有介绍自己...
    冒泡法:
    #define N 10
    #include<stdio.h>
    maopao(int a[N])
    {
    int i,j,t;
    for(j=0;j<N;j++)
    for(i=0;i<N-j;i++)
    if(a[i]>a[i+1])
    {
    t=a[i];
    a[i]=a[i+1];
    a[i+1]=t;
    }
    printf("排序后的数组为:\n");
    for(i=0;i<N;i++)
    printf("%d ",a[i]);
    printf("\n");
    }

    void main()
    {
    int i,a[N];
    printf("请输入10个数:\n");
    for(i=0;i<N;i++)
    scanf("%d",&a[i]);
    printf("\n");
    maopao(a[N]);

    }

    选择法:
    #include<stdio.h>
    #define N 10
    void main()
    {
    int i,j,k,t,a[N];
    for(i=0;i<N;i++)
    scanf("%d",&a[i]);
    for(i=0;i<N;i++)
    {
    k=i;
    for(j=i+1;j<N;j++)
    if(a[j]>a[k])
    k=j;
    if(k!=i)
    {
    t=a[i];
    a[i]=a[k];
    a[k]=t;
    }

    }
    for(i=0;i<10;i++)
    {
    printf("%d ",a[i]);

    }
    printf("\n");
    }

    -------------------------

    #include "stdio.h"
    void bubble_sort(int array[],int n)
    {//冒泡法排序
    int i,j,flag,temp;
    for(i = 0; i < n-1; i++)
    {
    flag = 1;
    for(j = 0; j < n-i-1; j++)
    {
    if(array[j] > array[j+1])
    {
    temp = array[j];
    array[j] = array[j+1];
    array[j+1] = temp;
    flag = 0;
    }
    }
    if(1 == flag)break;
    }
    }
    void choose_sort(int array[],int n)
    {//选择法排序
    int i,j,temp;
    for(i=0;i<n-1;i++)
    for(j=i+1;j<n;j++)
    if (array[i]>array[j])
    {
    temp = array[i];
    array[i] = array[j];
    array[j] = temp;
    }
    }
    void print(int array[],int n)
    {//输出数组
    int i;
    for(i = 0; i < n; i++)
    printf("%d ",array[i]);
    printf("\n\n");
    }
    int main()
    {
    int a[10],i;
    printf("please input the array a:\n");
    for(i=0;i<10;i++)
    scanf("%d",&a[i]);
    getchar();
    printf("排序前:");
    print(a,10);
    printf("1.用冒泡法排序。\n2.用选择法排序。\n\n请选择操作:");
    switch(getchar())
    {
    case '1':bubble_sort(a,10);break;
    case '2':choose_sort(a,10);break;
    default:printf("操作错误。");return 0;
    }
    printf("\n排序后:");
    print(a,10);
    return 0;
    }

    2019-07-17 22:49:55
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载