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

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

#include <stdioh>

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

}

C语言代码和运行结果如下:

可见成功按从大到小排序,望采纳~

附源码:

#include <stdioh>

void sort(int a[], int n) { 

    int i, j, t;

    for (i = 0; i < n - 1; i++) {

        for (j = 0; j < n - 1 - i; j++)

            if (a[j] < a[j + 1]) { // 将小数交换到后面

                t = a[j]; 

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

                a[j + 1] = t;

            }

    }

}

void display(int a[], int n) {

    int i;

    for (i = 0; i < n; i++)

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

    printf("\n");

}

int main() {

    int a[] = {1,3,2,8,0,6};

    int n = sizeof(a) / sizeof(a[0]);

    printf("从大到小冒泡排序:\n");

    sort(a, n);

    display(a, n);

    return 0;

}

冒泡排序法,是C语言常用的排序算法之一,意思是对一组数字进行从大到小或者从小到大排序的一种算法。

具体方法是:

相邻数值两两交换。从第一个数值开始,如果相邻两个数的排列顺序与我们的期望不同,则将两个数的位置进行交换(对调);如果其与我们的期望一致,则不用交换。重复这样的过程,一直到最后没有数值需要交换,则排序完成。

C语言常见的排序算法:

1、冒泡排序

基本思想:比较相邻的两个数,如果前者比后者大,则进行交换。每一轮排序结束,选出一个未排序中最大的数放到数组后面。

2、快速排序

基本思想:选取一个基准元素,通常为数组最后一个元素(或者第一个元素)。从前向后遍历数组,当遇到小于基准元素的元素时,把它和左边第一个大于基准元素的元素进行交换。在利用分治策略从已经分好的两组中分别进行以上步骤,直到排序完成。

3、直接插入排序

基本思想:和交换排序不同的是它不用进行交换 *** 作,而是用一个临时变量存储当前值。当前面的元素比后面大时,先把后面的元素存入临时变量,前面元素的值放到后面元素位置,再到最后把其值插入到合适的数组位置。

4、直接选择排序

基本思想:依次选出数组最小的数放到数组的前面。首先从数组的第二个元素开始往后遍历,找出最小的数放到第一个位置。再从剩下数组中找出最小的数放到第二个位置。以此类推,直到数组有序。

以上内容参考   百度百科-排序算法、百度百科-c语言冒泡排序

 

 

#include<stdioh>

void main()

{

int a[10];

int i,j,t;

printf("input 10 numbers:\n");

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

scanf("%d",&a[i]);

for(j=0;j<9;j++) /进行9次循环 实现9趟比较/

for(i=0;i<9-j;i++) /在每一趟中进行9-j次比较/

if(a[i]>a[i+1]) /相邻两个数比较,想降序只要改成a[i]<a[i+1]/

{

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

printf("the sorted numbers:\n");

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

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

}

扩展资料:

冒泡排序算法的运作

1、比较相邻的元素。如果第一个比第二个大(小),就交换他们两个。

2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大(小)的数。

3、针对所有的元素重复以上的步骤,除了最后已经选出的元素(有序)。

4、持续每次对越来越少的元素(无序元素)重复上面的步骤,直到没有任何一对数字需要比较,则序列最终有序。

简单的表示

#include <stdioh>

void swap(int i, int j)

{

int temp = i;

i = j;

j = temp;

}

int main()

{

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

int i,j;

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

{

for (j = 9; j > i; j--)//从后往前冒泡

{

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

{

swap(&a[j], &a[j-1]);

}

}

}

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

{

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

}

return 0;

}

参考资料来源:冒泡排序-百度百科

#include<stdioh>

void main(){

int i,j,score[10],count=0,temp,sum=0;

double avg;

for(i=0;i<10;i++){ //输入10个学生的成绩,并求着10个学生的成绩总和

printf("请输入第%d个学生的成绩:",(i+1));

scanf("%d",&score[i]);

sum+=score[i];

}

avg=sum10/10; //求着这10个学生成绩的平均值

for(i=0;i<10;i++){ //统计小于平均分的学生人数

if(score[i]<avg){

count++;

}

}

for(i=0;i<10;i++){ //使用冒泡排序对这10个学生的成绩逆序排序

for(j=0;j<9-i;j++){

if(score[j]<score[j+1]){

temp=score[j];

score[j]=score[j+1];

score[j+1]=temp;

}

}

}

printf("最高成绩:%d分,平均成绩:%2f分,低于平均成绩的人数是:%d人!\n",score[0],avg,count);

}

以上就是关于c语言编程题:分别用冒泡法和选择法对输入的10个整数由大到小排序全部的内容,包括:c语言编程题:分别用冒泡法和选择法对输入的10个整数由大到小排序、c语言冒泡排序从大到小姐姐1.3.2.8.0.6、C语言冒泡排序法是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9653177.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存