C语言:对输入的十个数进行从小到大排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言:对输入的十个数进行从小到大排序相关的知识,希望对你有一定的参考价值。

1、首先打开编辑软件,新建一个c程序空文件,引入标准库和主函数,定义一个QuickSort函数用来排序,下面首先编写排序函数的:

2、此处用到快速排序思想,通过一趟排序将要排序的数据分割成独立的两部分,即这里用i和j两个变量分割数据,然后一部分的所有数据都比另外一部分的所有数据都要小,接着对这两部分数据分别进行比较排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列:

3、接着编写主函数,主函数中定义一个数组,然后用scanf接受数组,用户输入10个数以后,会将数存在数组array中,然后调用上面处理排序的函数,函数的输入就是刚才输入的数,最后在把排序的结果输出即可:

4、最后编译运行,输入10个数,最后控制台输出了排序的结果,证明程序的逻辑是没有问题的。以上就是C语言输入10个数排序的演示:

参考技术A

以两种方法为例,分别是冒泡法和选择法。

【一】冒泡法

冒泡法的基本思路:每次将相邻的两个数相比较,将小的调到前头。

如果有n个数,则要进行n-1趟比较。在第一趟中要进行n-1次两两比较,在第j趟比较中要进行n-j次两两比较。

#include<stdio.h>  
#pragma warning(disable:4996)  
int main()  
  
    int i, j, temp, a[10];  
    printf("Please enter ten numners:\\n");  
    for (i = 0; i < 10; i++)  
        scanf("%d", &a[i]);  
    printf("\\n");  
    for (j = 0; j < 9; j++)  
      
        for (i = 0; i < 9 - j; i++)  
          
            if (a[i]>a[i + 1])  
              
                temp = a[i];  
                a[i] = a[i + 1];  
                a[i + 1] = temp;  
              
          
      
    printf("The sorted numbers:\\n");  
    for (i = 0; i < 10; i++)  
        printf("%d ", a[i]);  
    printf("\\n");  
    system("pause");  
    return 0;  

【二】选择法

选择法的基本思路:将前边的数依次和后边的每个数比较,每次挑出最小的放在前面。

如果有n个数、一共用进行n-1轮比较a[1]~a[n]就已按从小到大的顺序存放了。

#include<stdio.h>  
#pragma warning(disable:4996)  
int main()  
  
    int i, j, min, temp, a[10];  
    printf("Please enter ten numners:\\n");  
    for (i = 0; i < 10; i++)  
        scanf("%d", &a[i]);  
    printf("\\n");  
    for (i = 0; i < 9; i++)  
      
        min = i;  
        for (j = i + 1; j<10; j++)  
          
            if (a[min]>a[j])min = j;  
              
                temp = a[i];  
                a[i] = a[min];  
                a[min] = temp;  
              
          
      
    printf("The sorted numbers:\\n");  
    for (i = 0; i < 10; i++)  
        printf("%d ", a[i]);  
    printf("\\n");  
    system("pause");  
    return 0;  

参考技术B 排序方法太多,就用其中最简单的一个冒泡法吧
include <stdio.h>

void bubble(int *a,int n) /*定义两个参数:数组首地址与数组大小*/

int i,j,temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j])
temp=a[i];
a[i]=a[j];
a[j]=temp;



int main()

int arr[10];

for(int i=0;i<10;i++)


printf("请输入要排序的第%d个整数:\n",i+1);
scanf("%d",&arr[i]);


bubble(arr,10);

return 0;

参考技术C #include<stdio.h>
main()

int a[10],i,j,t;
printf("Input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("before sorting:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
t=a[i];a[i]=a[i+1];a[i+1]=t;
printf("\nafter sorting:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
参考技术D 你可以写一个简单的链表
线性物理结构对这方面处理比较简单

以上是关于C语言:对输入的十个数进行从小到大排序的主要内容,如果未能解决你的问题,请参考以下文章

C语言问题:从键盘输入十个整数,用选择排序法对输入的数据从小到大的顺序进行排序,将排序后的结果输出

C语言数组排序问题

C语言中,以命令行输入一组数字,并以从小到大排序输出!

C语言,二维点按照x坐标大小排序题。

C语言试题六十六之请编写函数实现三个数从小到大排序

C语言试题六十六之请编写函数实现三个数从小到大排序