三九宝宝网宝宝教育教学论文

C语言冒泡排序法的详细注释

12月24日 编辑 39baobao.com

[c语言题目!用冒泡排序法完成求大神们帮帮忙]不是给你写过一次了 #include <stdio.h> int main(void) { int a[6] = {10,8,5,7,3,1}; int i,j; int t; for(i = 0; i < 5; i++) //冒泡排序 for(j = 0; j < 5-i; j++) if(...+阅读

/* 用冒泡排序法对一维整型数组中的十个数升序排序 */

#include

int main()

{int i,j,t,a[10];

printf("Please input 10 integers:\n");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(i=0;i<9;i++) /* 冒泡法排序 */

for(j=0;j<10-i-1;j++)

if(a[j]>a[j+1])

{t=a[j];/* 交换a[i]和a[j] */

a[j]=a[j+1];

a[j+1]=t;

}

printf("The sequence after sort is:\n");

for(i=0;i<10;i++)

printf("%-5d",a[i]);

printf("\n");

system("pause");

return 0;

}

其中i=0时:

j从0开始a[0],a[1]比较大小,把其中的较大者给a[1],然后j++,a[1]和a[2]再比较,再把两者中的

较大者给a[2],这样a[0],a[1],a[2]中的最大者已经交换到a[2]中,这样继续直到j=10-i-1=9这样

a[9]中的为10个数中的最大数。

然后i=1时:

由于最大数已找到并放到a[9]中,所以这一次循环j最大只需到10-i-1=8,即a[8]即可,再次从j=0开始a[j]和a[j+1]两两比较交换,最后次大数放到a[8]中

然后i++,继续...

当i=9时已经过9次两两比较完成所有排序,i<9不再成立退出比较。

对于n个数,只需要进行n-1次外循环的两两比较就完成排序。

至于按降序排列只需将if(a[j]>a[j+1])改为if(a[j]

/* 用改进型冒泡排序法对一维整型数组中的十个数升序排序 */

#include

int main()

{int i,j,t,a[10],flag;

printf("Please input 10 integers:\n");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(i=0;i<9;i++) /* 改进型冒泡法排序 */

{ flag=0;

for(j=0;j<10-i-1;j++)

if(a[j]>a[j+1])

{ t=a[j]; /* 交换a[i]和a[j] */

a[j]=a[j+1];

a[j+1]=t;

flag=1;

}

if(flag==0)break;

}

printf("The sequence after sort is:\n");

for(i=0;i<10;i++)

printf("%-5d",a[i]);

printf("\n");

system("pause");

return 0;

}

这个和上面的实质一样,只是加了一个标志flag,当在一次大循环(即外层循环)内,在内层循环中如果 没有发生一次交换,那么就表示a[0]

以下为关联文档:

C语言编程题题目描述使用冒泡排序法对数组元素从小到大进行排序#include "stdafx.h" #include <iostream> #include <stdlib.h> using namespace std; void sort(int arry[],int counts)//冒泡排序法 { for(int i=0;i<counts;i++) { for(in...

大神求解C语言编程题冒泡排序和简单选择排序写出来#include #include #define ARR_LEN 255 /*数组长度上限*/ typedef struct stu { int stuID; /* 学号 */ float score; /* 成绩 */ } stu; /* 找出成绩最低的学生信息 */ stu...

C语言编程冒泡法排序问题#include<stdio.h> void main () { int i,j,k; int a[10]; printf("请输入10个数:\n"); for (i=0;i<=9;i++) scanf("%d",&a[i]); printf("\n"); for (j=0;j<=9;j++) for (i=0;i<9-j;i...

C语言题用二维数组和冒泡排序#include<stdio.h> #define n 4 int main() { char a[n][30]; char tempstr[30]; char ch[30]; int b[n]; int i,j,temp; printf("你好使用者,我是一个自动分析程序,请输入你想...

C语言冒泡排序#include<stdio.h> #define MAX 10 // #include <stdio.h> #define N 10 int main (){ int i,j,t,a[N]; printf("please input ten numbers:\n"); for (i=0;i<N;i++) scanf("%d...

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 到此第一趟排序结...

C语言冒泡排序法是怎么排序的C语言冒泡排序法的排2113序规则:5261 将被排序的记录4102数组R[1..n]垂直排列,每个记录R看作是重量为R.key的气泡1653。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡...

求关于c语言冒泡排序法的讲解冒泡排序法是简单的排序方法之一,它和气泡从水中往上冒的情况有 些类似。其具体做法是 (1)对于数组a中的1至n个数据,先将第n个和第n-1个数据进行比较,如果 a(n)<a(n-1),则两个数...

C语言编程排序问题冒泡正确的程序如下: 正确的程序如下: #include "stdio.h" void main() { int i,j,t,a[8];/*变量K没用*/ for(i=0;i<8;i++) scanf("%d",&a[i]);/*%d后不能加空格*/ for(j=1;j<8;j++)/*...

推荐阅读
图文推荐