C语⾔数组升序排列(冒泡排序法)
数组升序排列
1#include<stdio.h>
matrix cookbook2int main()
3{
4 int a[1000];
5 int i,j,n,t,k=0;
6 scanf("%d",&n);              //n值输⼊;
7 for(i=0;i<n;i++)
8  scanf("%d",&a[i]);      //n个int类型的数据输⼊;
9 for(j=n-1;j>0;j--)
10  for(i=0;i<j;i++)
html style标签11  if(a[i]>a[i+1])php正则修饰符
12  {
13    t=a[i];
14    a[i]=a[i+1];
15    a[i+1]=t;
16  }                    //嵌套循环解释如下(冒泡排序);
17 for(i=0;i<n;i++)
18 {
19  printf("%d ",a[i]);      //排好序的int类型数据输出;
冒泡排序代码c语言20  k++;
21  if(k%8==0)
22  printf("\n");        //输出时8个数据⼀⾏;
23 }
24    return 0;
25}
冒泡排序就是从左到右⽐较相邻两个元素的⼤⼩,以升序为例,第⼀轮⽐较时如果前⼀个元素⽐后⼀个元素⼤,就交换两个元素的位置,依次⽐较,直到最后⼀个元素最⼤。第⼆轮⽐较时倒数第⼆个元素就会为第⼆⼤的数,就这样⼀轮⼀轮的⽐较,最后实现升序排列。
例如,数组中元素为22,44,77,33,88,11,55,66
第⼀轮⽐较如下,帝国网站管理系统是干什么的
a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]
原数组2244773388115566
a[0]和a[1]⽐较2244773388115566
a[1]和a[2]⽐较2244773388115566
a[2]和a[3]⽐较2244337788115566
a[3]和a[4]⽐较2244337788115566
a[4]和a[5]⽐较2244337711885566
a[5]和a[6]⽐较2244337711558866
a[6]和a[7]⽐较2244337711556688
由表可得,第⼀轮⽐较将最⼤数88置于最后⼀个位置a[7]。
stance是什么意思第⼆轮⽐较如下,
a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]
第⼀轮所得数组2244337711556688
a[0]和a[1]⽐较2244337711556688
a[1]和a[2]⽐较2233447711556688
a[2]和a[3]⽐较2233447711556688
a[3]和a[4]⽐较2233441177556688
a[4]和a[5]⽐较2233441155776688
a[5]和a[6]⽐较2233441155667788由表可得,第⼆轮⽐较将第⼆⼤的数置于倒数第⼆个位置a[6]。
依次⼏轮⽐较可得出
a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]
1122334455667788

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。