为了账号安全,请及时绑定邮箱和手机立即绑定

冒泡排序每一趟起泡是怎么排的?

冒泡排序每一趟起泡是怎么排的?

C
Young65 2016-11-13 16:08:42
冒泡排序每一趟是怎么排的?
查看完整描述

3 回答

?
望远

TA贡献1017条经验 获得超1032个赞

举个例子站队(从矮到高站):
【1】队头和后面的同学比较,一旦发现更矮的就让队头和该同学换位置,让队头是最矮的那个,然后让第二个同学和后面的同学比较,让第二个同学是第二矮的,最终实现冒泡排序(常用)
【2】队尾和前面的那个同学比较更矮的往前站,然后让那个更矮的和他前面的比较,更矮的往前走,最后让第一个同学(队头)最矮,然后还是从队尾开始和前面的比较(除队头外),最终实现冒泡排序
查看完整回答
1 反对 回复 2016-11-13
?
聊发少年狂

TA贡献9条经验 获得超9个赞

#include <stdio.h>

int main()
{
	int arr[]={99,94,95,93,92,91,90,88,97,89};
	int i,j,k;
	printf("\n-----原始数据排序-----\n");
	for(i=0;i<10;i++){
		if(i!=9)
			printf("%d, ",arr[i]);
		else
			printf("%d",arr[i]);
	}
	
	for(i=8;i>=0;i--){
		for(j=0;j<=i;j++){
			if(arr[j]>arr[j+1]){
				int temp;
				temp=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=temp;
			}
			printf("\n-----内循环数据排序-----\n");
			for(k=0;k<10;k++){
			if(k!=9)
				printf("%d, ",arr[k]);
			else
				printf("%d",arr[k]);
			}
		}
		printf("\n-----外循环数据排序-----\n");
		for(k=0;k<10;k++){
			if(k!=9)
				printf("%d, ",arr[k]);
			else
				printf("%d\n",arr[k]);
		}
	}
	printf("\n\n-----循环完成排序-----\n");
	for(i=0;i<10;i++){
		if(i!=9)
			printf("%d, ",arr[i]);
		else
			printf("%d",arr[i]);
	}	
	return 0; 
}

我是选了10个数据进行从小到大开始排序的,其中内循环和外循环都有输出可以查看排序规则。

查看完整回答
反对 回复 2016-11-15
?
慕后端9494531

TA贡献1条经验 获得超0个赞


就是两个for循环,每次把一个最大或最小的放前面,前面已经排好序的就不用管了,依次进行


查看完整回答
反对 回复 2016-11-14
  • 3 回答
  • 1 关注
  • 2805 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信