问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么样使用C或把对数组1,5,7,2,5,4,10进行冒泡排序

发布网友 发布时间:2024-04-02 02:59

我来回答

3个回答

热心网友 时间:2024-10-01 15:49

也不知道你的基础如何,是简单的就想看个函数呢还是想问具体的冒泡排序的思想呢?
简单描述一下思想然后简单的举个例子吧:
思想:将第一个记录和第二个记录比较,若为逆序则对两个记录进行交换,然后比较第二个和第三个记录。以此类推,直到第n-1个记录和第n个记录进行比较为止。这样一次冒泡排序完成,最大(最小)的记录到最后一个位置上。然后从1开始到第n-2个也同样如上依次比较,这样依次直到依次找到次大(小)的值放到倒数第二个;三大(小)的值放到倒数第三个位置上,......直到最后一个为止;
循环结束条件即——某次排序过程中没有进行交换,即已经排好了。
举个简单的例子吧,函数相关的说明已经标注上了,希望对你有帮助!
#include <stdio.h>
void bubble_sort(int a[], int n){//其中a[]是用于排序的数组变量的首地址,也即数组名
int i = 0, j = 0, change = 0;//change用于记录当前次比较是否进行了交换
for(i = n - 1, change = 1; i >= 1 && change; i--){//如果change是0,即已经排好序不用再进行比较了
change = 0;//将当前次的change赋值为0,记录不交换即下次不用比较了
for(j = 1; j <= i; j++){//内循环依次将相邻的两个记录进行比较
if(a[j] > a[j+1]){//小的前移,最大的移动到本次的最后一项去
a[0] = a[j+1];
a[j+1] = a[j];
a[j] = a[0];
change = 1;//进行了交换的标记
}
}
}
}
void main(){
int a[8] = {0, 1, 5, 7, 2, 5, 4, 10};
int i = 0;
printf("排序前数据:\n\n");
for(i = 1; i <= 7; i++)
printf("%4d", a[i]);
printf("\n\n");
bubble_sort(a, 7);
printf("排序后数据:\n\n");
for(i = 1; i <= 7; i++)
printf("%4d", a[i]);
printf("\n\n");
}

热心网友 时间:2024-10-01 15:50

#include<stdio.h>
#include<string.h>
int main()
{
int s[20]={1,5,7,2,5,4,10};
int i,j,temp;
//for(i=0;i<7;i++)
// printf("%d\n",s[i]);
for(i=0;i<7;i++){
for(j=0;j<7-i-1;j++)
{
if( s[j] > s[j+1] )
{
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
printf("%d ",s[i]);
}
printf("\n");
}

热心网友 时间:2024-10-01 15:47

#include <stdio.h>

void bubble_sort(int array[],int n)
{
int i,j,flag,temp;
for(i = 0; i < n-1; i++)
{
flag = 1;
for(j = 0; j < n-i-1; j++)
{
if(array[j] > array[j+1])
{
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
flag = 0;
}
}
if(1 == flag)
break;
}
for(i = 0; i < n-1; i++)
printf("%d, ", array[i]);
printf("\n");
return;
}

void main()
{
int nNum[] = {1,5,7,2,5,4,10};
bubble_sort(nNum, sizeof(nNum)/sizeof(nNum[0]));
return;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
美的面包机和面要多久 美的面包机和面的时间要多长 美的面包机怎么用手动操作 如何用美的面包机发面 如何用美的面包机和面 美的面包机如何和面 CDR教程—教你如何使用CorelDRAW复制图形方法 苹果手机微信怎么换漂亮字体(苹果手机微信怎么换行输入) 有什么好用的app转换字体 手写转文字的软件 erp可以看评论地址吗 淘宝评论url是什么意思? 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 改错了未满一年怎么改回来 平安锁单是什么意思? 作家马识途几任妻子 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 平安人寿保险到期后怎样领取 六小龄童去世了吗 孙悟空的化身六小龄童现状 未满一年怎么改第二次 口气会传染疾病吗?会传染哪些疾病? 改错了未满一年怎么改回来 不满足一年想改 盗窃案多次不超过500元判刑会交多少 罚金 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 未满一年怎么强制改 一年内怎么改第二次 改错了未满一年怎么改回来? 一年只能改一次怎么改第二次? 修改未满一年怎么修改 怎么一年改两次 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 未满一年改二次方法 不满足一年想改 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... ...小世界.(1)充入食品包装袋中可防腐的单质___(填化学式, 手机号1 24 手机号24小时内绑定了两个被限制 请问什么时候才能重 ... 干铝灰可以作为铝水泄露的应急物资吗? 急!急!急!鸡得了新城疫,注射什么药好,在什么部位注射?跪求!!!_百度知 ... 和男朋友一年了,男朋友出轨能原谅吗? 铁血纵横的txt全集下载地址 老婆出轨一年了才和老公说、能原谅吗 是不是好小啊!! 翻译:他是一个很好共事的人 FL604E是什么拖拉机? 送花送小一点的花好吗 相处一年半,男友出轨了,还可以原谅吗 保定取消中考了吗 扁桃体肥大手术二十七天了怎么看着两边不一样大怎么回事? 为什么函数有界一定可积?