冒泡排序程序?
冒泡排序算法的原理如下:
1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3、针对所有的元素重复以上的步骤,除了最后一个。
4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
一段有序关键字怎么执行冒泡排序?
初始关键字: 19 01 26 92 87 11 43 87 21 第一遍排序后:01 19 26 87 11 43 87 21 92 第一遍排序后比较了:8次 第二遍排序后:01 19 26 11 43 87 21 87 92 第二遍排序后比较了:8+7=15次 第三遍排序后:01 19 11 26 43 21 87 87 92 第三遍排序后比较了:15+6=21次 第四遍排序后:01 11 19 26 21 43 87 87 92 第四遍排序后比较了:21+5=26次 第五遍排序后:01 11 19 21 26 43 87 87 92 第五遍排序后比较了:26+4=30次 第六遍排序后:01 11 19 21 26 43 87 87 92 第一遍排序后比较了:30+3=33次 判断冒泡排序结束的条件是“在一趟排序过程中没有进行过交换记录的操作”, 所以要进行第六遍排序。
是用C语言实现如下功能:从键盘输入8个整数,使用冒泡排序法把他们升序输出?
#include <stdio.h>
int main()
{
int a[6],i,j;
printf("请输入6个数字:\n");
for(i=0;i<6;i++)
scanf("%d",&a[i]);
for(i=0;i<5;i++)//冒泡。
{
for(j=0;j<5-i;j++)
{
if(a[j]<a[j+1])
{
int t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("冒泡排序后:\n");
for(i=0;i<6;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
对N个元素进行排序,用冒泡法进行排序时,共需排几次?
冒泡排序:最好情况需比较n-1次,最坏情况需比较n(n-1)/2;
选择排序:最好情况需比较n(n-1)/2,最坏情况需比较n(n-1)/2;
对分排序:最好情况需比较n/2logn,最坏情况需比较近似nlogn;根据算法本身,通过计算迭代次数,或建立递推方程求解
JAVA编程:给出一个字符数组,按从小到大排序?
这就是一个最基本的冒泡排序,
for(int i = 0; i < s.length; i++) { //外层循环控制比较的轮数
for(int j = i+1; j < s.length; j++) {//里层循环控制没轮比较的次数,每轮比较的次数都要少一个,
if( s[i] > s[j] ) {//判断当前位置是值和后一个位置的值,如果大于就换位置
char c = s[i]; //最基本的换位置的做法
s[i] = s[j];
s[j] = c;
}
}
}