我这个冒泡排序算法有没有问题啊

来源:百度知道 编辑:UC知道 时间:2024/07/05 02:28:09
//冒泡高位排序
for (j=0;j<=x.length-1;j++){
for (i=x.length-1;i>0;i--){
if (x[i]<x[i-1]){
temp=x[i];
x[i]=x[i-1];
x[i-1]=temp;
}

没有问题的,你第一个fo循环是代表冒泡排序要进行N轮,每轮将一个最小的数移动到前面,第二个for循环则是从最后一个数开始,比较该轮中后面是否有数比它前面的小,如果有则向前挪动一位。
你的程序可以稍微改动一下
for (j=0;j<=x.length-1;j++){
for (i=x.length-1;i>j;i--){ //改为i>j,以为前j轮已经排序好了最小的J个数了
if (x[i]<x[i-1]){
temp=x[i];
x[i]=x[i-1];
x[i-1]=temp;
}

你试一下把for (i=x.length-1;i>0;i--) 改成
for (i=x.length-1-j;i>0;i--)
应该这样改了就没有问题,你原来的那个j就没有用处了

没有问题

不知你运行过了没
冒泡法是相邻两个比较,没一轮比较得到最值

for (j=0;j<=x.length-1;j++){
for (i=0;i<x.length-1-j;i++){

升序排列的,放心用吧

改成 for (i=x.length-j-1;i>0;i--) 就行了!1