A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#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;

   
}

9 个回复

倒序浏览
你这是选择排序,j表示i之后的元素序号
回复 使用道具 举报
Judyisapunk 发表于 2015-9-4 21:10
你这是选择排序,j表示i之后的元素序号

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

for(int j=0;j<len-1-i;j++){
   if(arr[j]>arr[j+1])......
回复 使用道具 举报
Judyisapunk 发表于 2015-9-4 21:36
for(int j=0;jarr[j+1])......

if(arr[j]<arr[j+1])呢?
回复 使用道具 举报
你可以拿笔在纸上写写前两步的步骤。这样会清楚很多。i是表示要排序的数字,j的递增是表示i和i后面的每一个数字进行比较。
回复 使用道具 举报
你这个是选择排序把
回复 使用道具 举报
你这个是选择排序...因为你写的if里面是拿arr[i]和arr[j]比,内层循环的时候,i值不变,j变化
回复 使用道具 举报
TTsu 发表于 2015-9-4 21:32
你这个跟我刚开始做冒泡一样,虽然也是冒泡排序,但是for 循环嵌套的j,循环条件是j ...

这个我要好好理解一下~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马