c语言编程题:分别用冒泡法和选择法对输入的10个整数由大到小排序

如题所述

#include <stdio.h>

void maopao(int *a){

int temp=0;

for(int i=0;i<10-1;++i)//只需要冒泡9个数最后一个就已经有序了

for(int j=0;j<10-i-1;++j)//j的取值需<10-i-1;为何-1,

if(a[j]<a[j+1])

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

void  xuanze(int *a){

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

{

int temp=i,b;

for(int j=i+1;j<10;j++)

{

if(a[temp]<a[j])

temp=j;

}

if(i!=temp)

{

b=a[temp];

a[temp]=a[i];

a[i]=b;}

}

}

int main()

{

int a[10]={7,8,5,4,3,2,6,9,0,1};

int b[10]={1,2,5,7,43,23,565,6,9,10};

maopao(a);

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

printf("%d  ",a[n]);

printf("\n");

xuanze(b);

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

printf("%d  ",b[n]);

}

扩展资料:

需要说明的是:

1、一个C语言源程序可以由一个或多个源文件组成。

2、每个源文件可由一个或多个函数组成。

3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。

4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。

5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。结构体、联合体、枚举型的声明的“}”后要加“ ;”。

6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。

7、自定义函数在使用之前需要进行函数声明。

参考资料:

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-06-23
#include <stdio.h>
#define N 10
//冒泡排序(升序)
void bubble_sort(int a[],int n)
{
int i,j;  //j表示趟数,i表示第j趟两两比较的次数
int tmp; //临时变量
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
{
if(a[i] > a[i+1])
{
tmp=a[i];
a[i]=a[i+1];
a[i+1]=tmp;
}
}
}
//选择排序算法,按从小到大顺序
void select_sort(int *array,int n)
{
    int i,j,k;
    int tmp;
    for(i=0;i<n-1;i++)
    {
        k=i;  //开始一趟选择排序,假定第i个元素是后面n-i+1个未排序的元素中最小的元素
        for(j=i+1;j<n;j++)
        {
if(array[k] > array[j]) //如果发现比当前最小元素还小的元素,则更新记录最小元素的下标k
    k=j;
        }
//如果最小元素的下标不是后面n-i+1的未排序序列的第一个元素,则需要交换第i个元素和后面找到的最小元素的位置
        if(k != i)
        {
            tmp=array[k];
            array[k]=array[i];
            array[i]=tmp;
        }
    }
}
//输入数组元素函数
void inputData(int *a,int n)
{
int i;
printf("输入数组元素:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
}
//输出数组元素函数
void outputData(int *a,int n)
{
int i;
printf("输出数组元素:\n");
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n\n");
}
int main()
{
int arr[N]={0};
inputData(arr,N);
printf("使用冒泡排序算法...\n");
bubble_sort(arr,N);  //调用冒泡排序函数
outputData(arr,N);
inputData(arr,N);
printf("使用选择排序算法...\n");
select_sort(arr,N);  //调用选择排序函数
outputData(arr,N);
return 0;
}

第2个回答  2015-04-24
#include <iostream>  
using namespace std;  
  
#define N 10  
  
void MpSort(int *a,int n)  
{  
    int i,j;  
    for(i=0;i<n-1;i++)     
    {  
        for(j=0;j<n-1-i;j++)  
        {  
            if(a[j]>a[j+1])    
            {  
                a[j]=a[j]+a[j+1];  
                a[j+1]=a[j]-a[j+1];  
                a[j]=a[j]-a[j+1];             
            }  
        }  
    }  
}  
  
int main()  
{  
    int i,j;  
    int *a=new int[N];  
      
    for(i=0;i<N;i++)  
    {  
        cin>>a[i];  
    }  
      
    MpSort(a,N);  
  
    for(i=0;i<N;i++)  
    {  
        cout<<a[i]<<" ";  
    }  
    cout<<endl;  
    return 0;  
}  
//冒泡排序    
//时间复杂度是 O(pow(n,2))   

#include <iostream>  
using namespace std;  
  
  
#define N 10  
  
  
void XzSort(int *a,int n)  
{  
int i,j,min_i,t;  
for(i=0;i<n-1;i++)  
{  
min_i=i;  
for(j=i+1;j<n;j++)  
{  
if(a[min_i]>a[j])  
{  
min_i=j;  
}  
}  
if(min_i!=i)  
{  
t=a[i];  
a[i]=a[min_i];  
a[min_i]=t;  
}  
}   
}  
  
  
int main()  
{  
int *a;  
a=new int[N];  
  
for(int i=0;i<N;i++)  
{  
cin>>a[i];  
}  
  
XzSort(a,N);  
  
for(int i=0;i<N;i++)  
{  
cout<<a[i]<<" ";  
}  
cout<<endl;  
return 0;  
}  
  
  
//直接选择排序   
//时间复杂度为 O(pow(n,2))   

这种问题最基础网上一大推没必要问,我的是C++写的不过算法都是一样的

本回答被网友采纳

c语言编程题:分别用冒泡法和选择法对输入的10个整数由大到小排序
int a[10]={7,8,5,4,3,2,6,9,0,1};int b[10]={1,2,5,7,43,23,565,6,9,10};maopao(a);for(int n=0;n<10;++n)printf("%d ",a[n]);printf("\\n");xuanze(b);for(int n=0;n<10;++n)printf("%d ",b[n]);} ...

c语言高手帮忙:从键盘输入10个整数。用选择法或冒泡法将它们从小到大...
main(){ int s[10],t,i,j,x;printf("input 10 numbers:\\n");for(t=0;t<10;t++)scanf("%d",&s[t]);for(i=0;i<9;i++)for(j=0;j<9-i;j++)if(s[j]>s[j+1]){t=s[j];s[j]=s[j+1];s[j+1]=t;} printf("the result is:\\n ");for(j=0;j<10;j++)p...

跪求c语言编程高手,题目——输入十个数,从大到小排序(两种方法)
void sort1(int * a, int n) \/\/选择排序 { int i, j, max, tmp;for (i = 0; i < n; i++){ max = i;for (j = i + 1; j < n; j++)if (a[max] < a[j])max = j;tmp = a[i];a[i] = a[max];a[max] = tmp;} } void sort2(int * a, int n) \/\/...

C语言:采用冒泡排序方法,对10个数按由小到大的的顺序排序
代码如下(对10个整数进行升序排序):include<stdio.h> int main(){ int i,j,t,a[10]={5,4,8,3,6,9,7,222,64,88};\/\/排序 for(i=1;i<10;i++)\/\/外循环控制排序趟数,n个数排n-1趟 { for(j=0;j<10-1;j++)\/\/内循环每趟比较的次数,第j趟比较n-i次 { if(a[j]>a...

用C语言,随机输入10个整数,用冒泡排序法对这些整数进行从小到大排序...
C语言随机输入10个整数的源代码如下:include"stdio.h"void fun(int a[]){ int i,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;} } void main(){ FILE *wf;int a[10];int b[10]={9,10,11,12,1,2,3,4,0,1};...

C语言用冒泡法和选择法对10个数进行排序
选择排序法对十个整数进行排序 \/ \/\/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[...

C语言冒泡法排序:任意输入十个数排序(从小到大;从大到小)
从大到小:include<stdio.h> define N 10 void main(){ int i,j;float a[N],t;printf("排序前:\\n");for(i=0;i<N;i++){ scanf("%d",&a[i]);} for(i=0;i<N;i++){ printf("%6.1f",a[i]);} printf("\\n");for(i=0;i<N-1;i++){ for(j=0;j<N-i-1;j++...

c语言 输入十个整数,从大到小排序,并输出来。求解题思路
指针冒泡排序 :void PrintArr(int* arr, int sz){ int i = 0;for (i = 0; i < sz; i++){ printf("%d ", *(arr + i));} return 0;} void BubbleSort(int *arr, int sz){ int start = arr;int end = arr + sz - 1;\/\/趟数 while (start < end){ int *cur = ...

C语言:写一函数,用“冒泡法”对输入的10个字符按由小到大顺序排列
1、打开Visual stdio 2019软件新建空白c文件,在源文件处右击鼠标,选择添加下面的新建项,此时会弹出窗口:2、弹出的窗口选择C++文件,将文件扩展名改为“.c”点击添加完成新建c文件,之后就可以编写程序了:3、接下来就可以编写程序了,首先最前面的部分为输入数字的部分,之后的程序会对用户输入的数字...

C语言题:输入十个数用一维数组分别用冒泡法与选择排序法进行排序
<conio.h>#define ARR_LEN 255 \/*数组长度上限*\/#define elemType int \/*元素类型*\/\/* 冒泡排序 *\/\/* 1. 从当前元素起,向后依次比较每一对相邻元素,若逆序则交换 *\/\/* 2. 对所有元素均重复以上步骤,直至最后一个元素 *\/\/* elemType arr[]: 排序目标数组; int len: 元素个数 *\/...

相似回答