c语言冒泡排序函数(C语言的“冒泡排序”怎么做sort(str)什么意思)

本文目录
C语言的“冒泡排序”怎么做sort(str)什么意思
对于冒泡:
可以这样考虑
外层循环式控制一共有多少个泡需要排序, 这个当然要用循环
内层循环控制把某一个泡放到正确的位置, 这个也要用循环, 因为这个泡要和所有未排序泡比较一遍, 然后才能知道自己应该处的位置
这里有两个点,明白了的话,这道题就明白了
1. 外层循环: 仅仅控制一共有多少个泡需要排序, 比如代码中a, 一共是10个元素
2. 内层循环: 仅仅控制把当前最大的泡放到最后, 也就是一次内层循环,仅仅把最大的那个泡放到最后了而已
把1和2综合起来看
当j=0时,把a数组10个元素中最大的泡放到最后
当j=1时,把a数组10个元素中第二大的元素放到倒数第二此山个位置
依次类推..直到第10大的元素,即最小的元素拿弯放到正数第一个位置
楼主可以这样测试一下,会更加清晰,把第一个循环去掉, 内层循环改为:
for(i=0; i《 10; i++) 相当于仅执行上述j=0的一次内层循环, 这个循环的作用是把最大的元素放到最后
在解释消扒闷下内层循环为什么是 i《10-j 其实这个不难理解
当j=0时, 相当于 for(i=0;i《10;i++) 也就是遍历所有元素,把最大的放到最后
当j=1时, 相当于 for(i=0;i《9;i++) 这次仅仅遍历前9个元素,把前9个元素中最大的放到第九个位置, 因为第10个位置已经是最大的了,不用再次比较了.
如果实在是对嵌套循环理解不了,还有个简单的办法,把外层循环解开:
也就是可以这么写:
//----------------------------------------
for(i=0;i《10;i++) //等价于j=0
if (a)
{
temp=a;
a;
a=temp;
}
for(i=0;i《9;i++) //等价于j=1
if (a)
{
temp=a;
a;
a=temp;
}
...//同上,仅仅是把i《后面的值递减,直到
for(i=0;i《1;i++) //等价于j=9
if (a)
{
temp=a;
a;
a=temp;
}
上面这一系列代码,等价于原来的双层嵌套循环
sort(str) 就是用户自定义的冒泡排序函数的函数名,str作为函数参数
C语言:写一函数,用“冒泡法”对输入的10个字符按由小到大顺序排列
1、打开Visual stdio 2019软件新建空白c文件,在源文件处右击鼠标,选择添加下面的新建项,此时会弹出窗口:
2、顷灶弹出的窗口选择C++文件,将文件陵备扩展名改为“.c”点击添加完成新建c文件,之后就可以编写程序了:
3、接下来就可以编写程序了,首先最前面的部分为输入数字的部分,之后的程序会对用户输入的数字就行排序,最后则是将结果打印出来。冒泡排序需要用到两层循环,第一层循环遍历数组中的元素,第二层则进行两两比较,如果顺序不对就要对其进行换位,直到排序完成:
4、最后执行程序观察结果,按下crtl+F5弹出程序,随意输入10个数,按下回车键执雀汪扮行结果,此时就可以看到排序后的结果了。以上就是c语言冒泡排序程序的演示:
1. 编写冒泡排序和选择排序的程序,主函数中编写菜单调用排序函数C语言
//C语言示例代码如下
#include 《stdio.h》
#define N 10
//冒泡排序(升序)
void bubble_sort(int a,int n)
{
int i,j; //j表示趟数,i表示第j趟两两比较的次数
int tmp; //临时变量
for(i=0;i《n-1;i++)
for(j=0;j《n-1-i;j++)
{
if(a)
{
tmp=a;
a;
a=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
k=j;
}
//如果最小元素的下标不是后面n-i+1的未排序序列的第一个元素,则需要交换第i个元素和后面找到的最小元素的位置
if(k != i)
{
tmp=array;
array;
array=tmp;
}
}
}
int main()
{
int arr;
int i;
printf("输入数组元素: ");
for(i=0;i《N;i++)
scanf("%d",&arr);
bubble_sort(arr,N); //调用冒泡排序函数
printf("输出排序后的数组元素: ");
for(i=0;i《N;i++)
printf("%d ",arr);
printf("\n输入数组元素: ");
for(i=0;i《N;i++)
scanf("%d",&arr);
select_sort(arr,N); //调用选择排序函数
printf("输出排序后的数组元素: ");
for(i=0;i《N;i++)
printf("%d ",arr);
printf("\n");
return 0;
}

本文相关文章:
winhex怎么读(如何用winhex软件识别一个word文档)
2026年10月13日 08:30
vmware workstation 8 序列号(vmware workstation 怎么安装)
2026年10月4日 04:20
office2010怎么免费永久激活(word2010如何免费激活)
2026年9月12日 08:40
ansys下载(跪求ansys workbench14.5安装包或下载地址)
2026年9月3日 14:50
ueditor富文本编辑器(百度编辑器ueditor怎么安装百度UEditor)
2026年8月21日 17:00
qq输入法历史版本大全(QQ输入法for Mac 2.0隆重登场)
2026年8月6日 12:10
官方网站域名(到底哪个是官方网站,是.net还是.org,又或者是.cn)
2026年8月5日 09:10
微商助手苹果版下载(app store微商助手邀请码是多少)
2026年7月20日 03:10
autorun下载(MP4上的Autorun.inf文件可以把歌曲下载到那个文件里吗)
2026年7月19日 13:10
更多文章:
idea控制台乱码(idea 输出 System.out.println() 控制台乱码)
2026年10月14日 07:30
spring事务的作用(为什么要使用spring的事务,一般在什么情况下使用)
2026年10月14日 05:40
linux怎么进入命令行(怎么样配置linux使其启动时直接登录到命令行模式)
2026年10月14日 02:00
java培训机构好还是大学好(大学生想转行学java,该去java培训班还是自学呢)
2026年10月13日 23:30
前端面试必背十个点(资深HR揭秘:Web前端面试技巧有哪些)
2026年10月13日 17:50
sqlplus重置用户名密码(Oracle中的plus的用户名和密码忘了怎么办)
2026年10月13日 17:40

