黑马程序员技术交流社区

标题: 冒泡排序代码,睡能解释一下J代表什么意思 [打印本页]

作者: hoohoo    时间: 2015-9-4 20:53
标题: 冒泡排序代码,睡能解释一下J代表什么意思
#include<stdio.h>
int main(){
    int array[5]={23, 44, 1, 100, 78};
    int a=sizeof(array)/sizeof(int);
    for(int i =0;i<a-1;i++){
        for(int j = i+1;j<a;j++){
            if(array[i] > array[j]){
                int max = array[i];
                array[i] = array[j];
                array[j] = max;
            }
            
        }
        
    }
    for(int i = 0; i < a; i++){
        
        printf("array[%d]=%d\n",i, array[i]);
      
        
    }
    return 0;

   
}
作者: Judyisapunk    时间: 2015-9-4 21:10
你这是选择排序,j表示i之后的元素序号
作者: hoohoo    时间: 2015-9-4 21:18
Judyisapunk 发表于 2015-9-4 21:10
你这是选择排序,j表示i之后的元素序号

难道不是冒泡排序吗??
作者: TTsu    时间: 2015-9-4 21:32
你这个跟我刚开始做冒泡一样,虽然也是冒泡排序,但是for 循环嵌套的j,循环条件是j<a,代码让内层循环做了冗余操作,
作者: Judyisapunk    时间: 2015-9-4 21:36
hoohoo 发表于 2015-9-4 21:18
难道不是冒泡排序吗??

for(int j=0;j<len-1-i;j++){
   if(arr[j]>arr[j+1])......
作者: hoohoo    时间: 2015-9-4 21:40
Judyisapunk 发表于 2015-9-4 21:36
for(int j=0;jarr[j+1])......

if(arr[j]<arr[j+1])呢?

作者: 庐山烟雨浙江潮    时间: 2015-9-4 21:45
你可以拿笔在纸上写写前两步的步骤。这样会清楚很多。i是表示要排序的数字,j的递增是表示i和i后面的每一个数字进行比较。
作者: kylmetz    时间: 2015-9-4 21:59
你这个是选择排序把
作者: pyy061    时间: 2015-9-4 22:16
你这个是选择排序...因为你写的if里面是拿arr[i]和arr[j]比,内层循环的时候,i值不变,j变化
作者: hoohoo    时间: 2015-9-5 22:42
TTsu 发表于 2015-9-4 21:32
你这个跟我刚开始做冒泡一样,虽然也是冒泡排序,但是for 循环嵌套的j,循环条件是j ...

这个我要好好理解一下~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2