99问答网
所有问题
c语言中冒泡问题。为什么冒泡排序出来的有一个是乱码,而另一种算法排序(第三张图)出来的是好的?
如题所述
举报该问题
推荐答案 2019-08-24
冒泡排序
的外层循环是for(i=0; i<n-1; i++),内层循环是for(j=0; j<n-1-i; j++),每次比较的两个元素是a[j]和a[j+1]。你的n=5,所以外层循环应该是for(i=0; i<4; i++),内层循环应该是for(j=0; j<4-i; j++)。
追问
请问多一个1为什么会乱码?
追答
因为数组越界,你的写法当外层循环i=0时内层循环会持续到j=4,此时a[j+1]也就是a[5]越界。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://99.wendadaohang.com/zd/ve7XB7BOzWWtzjBeee.html
相似回答
为什么
这个
冒泡排序
输出
的是乱码
答:
错误如下,已经指出:内层的for循环中的判定条件是:n-1-i; 循环体中,t未初始化,所以会是未知的值。你将这三句倒过来写试试。下面给你改正的你可以看看 include <stdio.h>int main(){ void arrange(int a[],int n); int a[10],i; for(i=0;i<10;i++) scanf("%d",...
C语言冒泡排序
法是怎么排序的?
答:
将被
排序
的记录数组R[
1
..n]垂直排列,每个记录R看作是重量为R.key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。初始 R[1..n]为无序区。第一趟扫描 从无...
c语言冒泡排序
详解
答:
冒泡排序的原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个
。这个数就会从序列的最右边冒出来。以从小到大排序为例,第一轮比较后,所有数中最大的那个数就会浮到最右边;第二轮比较后,所有数中第二大的那个数就会浮到倒数第二个位置……就这样一轮...
C语言冒泡排序
答:
冒泡排序
基本思想将n个记录看作按纵向排列,每趟排序时自下至上对每对相邻记录进行比较,若次序不符合要求(逆序)就交换。每趟排序结束时都能使排序范围内关键字最小的记录象一个气泡一样升到表上端的对应位置,整个排序过程共进行n-1趟,依次将关键字最小、次小、第三小的各个记录“冒到”表的第...
c语言冒泡排序
法代码一直排序错误,有时只能排前两
个,
不明白原因,请问究 ...
答:
} //
冒泡排序算法
for(j=0;j<n-1;j++) //外层循环,控制排序次数 { for(i=0;i<n-1-j;i++) //内层循环,控制每次排序的范围 { if(num[i] > num[i+1]) //如果相邻元素逆序,则交换它们的位置 { temp = num[i];num[i] = num[i+1];num[i+1] = temp...
这段
C语言
代码
为什么
运行结果输出数组里老是
有一个
位置
是乱码
?
答:
这里数组里总共有a个数,j的范围是0到a-1,所以当j等于a-1时,j+1就是a,这时balboa[a]已经数组越界了,所以你会把a个数范围之外的元素交换到前面,而这些元素是未初始化的,所以会
有乱码
。所以j的范围应该是0到a-1,你试试,这时候其实你算法还是有点小
问题的
,等你先改进这一步,再说。
C语言的一个冒泡排序
方法,我感觉两种方法都对
,为什么
结果不一样呢?
答:
由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作
冒泡排序
。用二重循环实现,外循环变量设为i,内循环变量设为j。外循环重复9次,内循环依次重复9,8,...,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,......
C语言冒泡排序
法代码是
什么
?
答:
所谓
冒泡排序
法,就是对一组数字进行从大到小或者从小到大
排序的一种算法
。1、具体方法是,相邻数值两两交换。从第一个数值开始,如果相邻两个数的排列顺序与我们的期望不同,则将两个数的位置进行交换(对调);如果其与我们的期望一致,则不用交换。重复这样的过程,一直到最后没有数值需要交换,则...
C语言,
用
冒泡排序
实现10个数字由小到大输出
,为什么
我弄
出来是乱码
答:
if(b[k]>b[k+1]){ m=b[k];b[k]=b[k+1];b[k+1]=m;} } } void out(int c[10]){ int j;for(j=0;j<10;j++)printf("%3d",c[j]);// return c[10];} int main(){ int i;int a[10];for(i=0;i<10;i++){ scanf("%d",&a[i]);// return a[i];} ...
大家正在搜
c语言选择排序法和冒泡排序
冒泡排序算法c语言
c语言冒泡法排序10个数
c语言冒泡排序法代码
c语言冒泡排序十个数
冒泡法排序c语言编写
c语言冒泡n个数从小到大排序
c语言数组冒泡排序
冒泡排序函数c语言
相关问题
C语言冒泡排序。
c语言中的冒泡排序为什么要循环两次(外部和内部的)?分别要循...
c语言编程:对10个数冒泡排序(升序)。
C语言:编写一个程序用冒泡排序实现升序排列
c语言编程。。。输入一数组,按从大到小的顺序排列(提示:可用...
C语言,冒泡排序那里,为什么要定义一个i,一个j他们的用处分...
C语言中冒泡排序法和选择排序法有哪些不同
C语言冒泡排序降序没问题,升序有问题,为什么?