冒泡排序(函数)
2023-12-13 09:07:51
冒泡排序
,将一个列表中的两个元素进行比较,并将最小的元素交换到顶部。两个元素中较小的会冒到顶部,而较大的会沉到底部,该过程将被重复执行,直到所有元素都被排序。
输入格式:
输入在第1行中给出N(1<N≤100),在第2行中给出N个待排序的整数,数字间以空格分隔,并保证数字没有重复的出现。
输出格式:
给出冒泡排序每一遍后的中间结果数列,数字间以空格分隔,但末尾不得有多余空格。注意:当排序完成时应立即停止
。
输入样例1:
7
4 5 7 6 3 2 1
输出样例1:
4 5 6 3 2 1 7
4 5 3 2 1 6 7
4 3 2 1 5 6 7
3 2 1 4 5 6 7
2 1 3 4 5 6 7
1 2 3 4 5 6 7
输入样例2:
6
1 2 3 6 5 4
输出样例2:
1 2 3 5 4 6
1 2 3 4 5 6
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
C程序如下:
#include <stdio.h>
void show(int a[], int size);//定义一个用于输出数值的函数
void select(int a[], int size);//定义一个用于排序的函数
int main(void)
{
int size;
scanf("%d", &size);
int a[size];//定义一个长度为size的数组
for(int i = 0; i < size; i++)
{
scanf("%d", &a[i]);//输入size个数
}
select(a,size);//对这组数进行排序
return 0;
}
void select(int a[], int size)//定义一个用于排序的函数
{
for(int i = 1; i <= size - 1; i++)//外循环size-1次,第一次循环将最大的数排在最右边,第二次将第二大的排在倒数第二,以此类推
{
int flag = 0;//定义一个标志
for(int j = 0; j < size - i; j++)//内循环找到前size-i中的最大数
{
if(a[j] > a[j + 1])//比较a[j]与其后一个数的大小
{
int temp = a[j];//交换较大数位置
a[j] = a[j + 1];
a[j + 1] = temp;
flag = 1;//如果交换了位置就让flag=1
}
}
if(flag == 0)
{
break;
}
show(a, size);//输出每一下交换位置后的值
}
}
void show(int a[], int size)//输出每一次交换后的数值
{
printf("%d", a[0]);
for(int i = 1; i < size; i++)
{
printf(" %d", a[i]);
}
printf("\n");
}
文章来源:https://blog.csdn.net/2302_80325489/article/details/134958802
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!