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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#include<stdio.h>
int main(){
    int arr[]={1,2,4,3,8,5};
//    冒泡排序
    int temp;
    int n=(sizeof(arr)/sizeof(int));
    for (int i=0; i<n-1; i++) {
        for (int j=0; j<n-1-i; j++) {
            if (arr[j]<arr[j+1]) {
                temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
        }
    }
    for (int i=0; i<6; i++) {
        printf("%d\t",arr[i]);
    }
    printf("\n");
//    选择排序
    int tempMax;
    for (int i=0; i<n; i++) {
        for (int j=i+1; j<n; j++) {
            if (arr[i]>arr[j]) {
                tempMax=arr[i];
                arr[i]=arr[j];
                arr[j]=tempMax;
            }
        }
    }
    for (int i=0; i<6; i++) {
        printf("%d\t",arr[i]);
    }
printf("\n");
return0;
}

10 个回复

倒序浏览
楼主写的不错,学习了。
回复 使用道具 举报
这是以前视频的做法,现在有新的写法了,但是觉得还是原来的好理解
回复 使用道具 举报
嗯      //将数组从大到小排序
    int arr[] = {6,4,55,73,52,97,29,66};
    int len = sizeof(arr)/sizeof(int);
    int temp;

    int tempIndexMax = 0;
    //选择排序
    for (int i=0; i<len-1; i++) {
        tempIndexMax = i;
        for (int j=i+1; j<len; j++) {
            if (arr[j]>arr[tempIndexMax]) {
                tempIndexMax = j;
            }
        }
        
       if (arr[i]!=arr[tempIndexMax]) {
            temp = arr[i];
            arr[i] = arr[tempIndexMax];
            arr[tempIndexMax] = temp;
        }
    }

据说这种因为少了几次排序,节省内存些。
楼主的这种,理解着用着都比较省心。
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
方法都不错,各有各的感觉
回复 使用道具 举报
面试还有点远,不过不妨碍我看看
回复 使用道具 举报
支持支持!!!
回复 使用道具 举报
赞,顶一个
回复 使用道具 举报
先收藏了,有空看看
回复 使用道具 举报
冒泡理解起来比排序简单点
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马