flash player安卓版2021C语⾔冒泡排序(含实例)
冒泡排序(Bubble Sort)
思路:
在需要排序的⼀组数中,将⼀个数与排在他之后的数依次进⾏⽐较,挑选出其中符合条件的数,再依次向后⽐较,以此类推。(此处若不理解,可先向下看)
步骤(从⼩到⼤排序为例):
1.建⽴数组,假使数组a[]有n个顺序紊乱的数。
2.先选出最⼩的数,将其赋予a[0],再选出第⼆⼩的数,将其赋予a[1],依次类推。
举例:选出最⼩的数:
取a[0],将其依次与a[1],a[2],a[3]……a[j],直到a[j]<a[0],再将a[j]与a[j]之后的数⽐较,直到出⽐a[j]⼩的数,再将其与在其之后的数⽐较,直到数组最后⼀个数⽐较完,再将这时最⼩的数赋予a[0]。
同理,选出第⼆⼩的数:
取a[1],将其与之后的数⽐较,直到出⽐a[1]⼩的数a[j],再把a[j]与之后的数⽐较,循环这⼀环节,直到数组最后⼀个数,再将最后出来的那个数赋予a[1]。
3.有n个数,将重复n-1次步骤2.排序结束,直接输出即可。
数据实例:
数组数据:5,10,9,8,4.
第⼀次:4,5,10,9,8.
第⼆次:4,5,10,9,8.(5在第⼆位,⽽5⼜刚好是数组中第⼆⼩的数,所以顺序没变。)
第三次:4,5,8,10,9.
第四次:4,5,8,9,10.
算法实例:
#include<stdio.h>
int main()
{
int a[1000];
int n;//数组数据个数
int i, j;
冒泡排序代码c语言int p;//a[p]⽤于储存数据
int t;//⽤于交换数据
while (scanf("%d", &n) != EOF)//应⽤与多组输⼊,作⽤是可以输⼊多组数据,不⽤⼀次⼀次编译
{
for (i = 0; i < n; i++)
scanf("%d", &a[i]);//输⼊数组数据,即需要排序的数
for (i = 0; i < n; i++)
特斯拉召回model 3
{
p = i;
for (j = i + 1; j < n; j++)
ecshop环境搭建{
if (a[p] > a[j]) p = j;
}
if (p != i) { t = a[i]; a[i] = a[p]; a[p] = t; }
}
for (i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
网页登录界面模板k8s在线安装}
return 0;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论