c语言用函数冒泡法排序,冒泡法排序C语言
C语言冒泡排序法是什么?
冒泡排序法,是C语言常用的排序算法之一,意思是对一组数字进行从大到小或者从小到大排序的一种算法。
网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、小程序制作、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了三元免费建站欢迎大家使用!
具体方法是:
相邻数值两两交换。从第一个数值开始,如果相邻两个数的排列顺序与我们的期望不同,则将两个数的位置进行交换(对调);如果其与我们的期望一致,则不用交换。重复这样的过程,一直到最后没有数值需要交换,则排序完成。
C语言常见的排序算法:
1、冒泡排序
基本思想:比较相邻的两个数,如果前者比后者大,则进行交换。每一轮排序结束,选出一个未排序中最大的数放到数组后面。
2、快速排序
基本思想:选取一个基准元素,通常为数组最后一个元素(或者第一个元素)。从前向后遍历数组,当遇到小于基准元素的元素时,把它和左边第一个大于基准元素的元素进行交换。在利用分治策略从已经分好的两组中分别进行以上步骤,直到排序完成。
3、直接插入排序
基本思想:和交换排序不同的是它不用进行交换操作,而是用一个临时变量存储当前值。当前面的元素比后面大时,先把后面的元素存入临时变量,前面元素的值放到后面元素位置,再到最后把其值插入到合适的数组位置。
4、直接选择排序
基本思想:依次选出数组最小的数放到数组的前面。首先从数组的第二个元素开始往后遍历,找出最小的数放到第一个位置。再从剩下数组中找出最小的数放到第二个位置。以此类推,直到数组有序。
以上内容参考 百度百科-排序算法、百度百科-c语言冒泡排序
C语言冒泡排序
C语言冒泡排序法的排序规则:将被排序的记录数组R[1..n]垂直排列,每个记录R看作是重量为R.key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。初始 R[1..n]为无序区。第一趟扫描 从无序区底部向上依次比较相邻的两个气泡的重量,若发现轻者在下、重者在上,则交换二者的位置。即依次比较(R[n],R[n-1]),(R[n-1],R[n-2]),…,(R[2],R[1]);对于每对气泡(R[j+1],R[j]),若R[j+1].key void sort(int *a,int len) {int i=0; int j; int t; for(i=0;ia[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } } int main(int argc, char *argv[]) { int a[10]={ -999,2,3,77,12,88,0,-8,99,100 }; int i=0; sort(a,10); for(i=0;i10;i++) { printf("%d ",a[i]); } return 0; }
c语言冒泡排序法
(1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
(2)实例:
(3)代码解释:
#includestdio.h
int main()
{
int a[10];
int i,j,t,temp;//temp记录临时中间值
printf("请输入10个数:");
for (i=0;i10;i++)
{
scanf("%d",a[i]);//记录输入的十个数
}
for (j=1;j=9;j++)
{
t=10-j;
for (i=0;it;i++)
{
if (a[i]a[i+1]) {
// 交换两数的位置
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
for (i=0;i=9;i++)
{
printf("%d\t",a[i]);
}
return 0;
}
望采纳!
用C语言编写函数,要实现快速排序算法或者冒泡法
冒泡法排序函数如下:
void bubble(int a[],int n)
{int i,j,t;
for(i=0;in-1;i++)/*共进行n-1轮*/
for(j=0;jn-1-i;j++)/*每轮在前n-i个数中比较*/
if(a[j]a[j+1]) /*若相邻元素逆序*/
{t=a[j]; a[j]=a[j+1];a[j+1]=t;}/*就交换*/
}
void sort(int *a, int left, int right)
{
if(left = right)/*如果左边索引大于或者等于右边的索引就代表已经整理完成一个组了*/
{
return ;
}
int i = left;
int j = right;
int key = a[left];
while(i j) /*控制在当组内寻找一遍*/
{
while(i j key = a[j])
/*而寻找结束的条件就是,1,找到一个小于或者大于key的数(大于或小于取决于你想升
序还是降序)2,没有符合条件1的,并且i与j的大小没有反转*/
{
j--;/*向前寻找*/
}
a[i] = a[j];
/*找到一个这样的数后就把它赋给前面的被拿走的i的值(如果第一次循环且key是
a[left],那么就是给key)*/
while(i j key = a[i])
/*这是i在当组内向前寻找,同上,不过注意与key的大小关系停止循环和上面相反,
因为排序思想是把数往两边扔,所以左右两边的数大小与key的关系相反*/
{
i++;
}
a[j] = a[i];
}
a[i] = key;/*当在当组内找完一遍以后就把中间数key回归*/
sort(a, left, i - 1);/*最后用同样的方式对分出来的左边的小组进行同上的做法*/
sort(a, i + 1, right);/*用同样的方式对分出来的右边的小组进行同上的做法*/
/*当然最后可能会出现很多分左右,直到每一组的i = j 为止*/
}
C语言冒泡排序法
冒泡排序每一趟排序把最大的放在最右边。
比如:
87 12 56 45 78
87和12交换:12 87 56 45 78
87和56交换: 56 87 45 78
87和45交换: 45 87 78
87和78交换: 78 87
到此第一趟排序结束,接下来的每一趟排序都是这样。
#includestdio.h
void Print(int *num, int n)
{
int i;
for(i = 0; i n; i++)
printf("%d ", num[i]);
puts("\n");
return;
}
void Bubble_Sort(int *num, int n)
{
int i, j;
for(i = 0; i n; i++)
{
for(j = 0; i + j n - 1; j++)
{
if(num[j] num[j + 1])
{
int temp = num[j];
num[j] = num[j + 1];
num[j + 1] = temp;
}
Print(num, n);
}
}
return;
}
int main()
{
int num[8] = {87, 12, 56, 45, 78};
Bubble_Sort(num, 5);
return 0;
}
C语言:写一函数,用“冒泡法”对输入的10个字符按由小到大顺序排列
1、打开Visual stdio 2019软件新建空白c文件,在源文件处右击鼠标,选择添加下面的新建项,此时会弹出窗口:
2、弹出的窗口选择C++文件,将文件扩展名改为“.c”点击添加完成新建c文件,之后就可以编写程序了:
3、接下来就可以编写程序了,首先最前面的部分为输入数字的部分,之后的程序会对用户输入的数字就行排序,最后则是将结果打印出来。冒泡排序需要用到两层循环,第一层循环遍历数组中的元素,第二层则进行两两比较,如果顺序不对就要对其进行换位,直到排序完成:
4、最后执行程序观察结果,按下crtl+F5弹出程序,随意输入10个数,按下回车键执行结果,此时就可以看到排序后的结果了。以上就是c语言冒泡排序程序的演示:
文章标题:c语言用函数冒泡法排序,冒泡法排序C语言
转载来源:http://ybzwz.com/article/dsshcgs.html