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

如题所述

#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;
}

温馨提示:答案为网友推荐,仅供参考
相似回答