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

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

据说这种因为少了几次排序,节省内存些。
楼主的这种,理解着用着都比较省心。
回复 使用道具 举报
这是以前视频的做法,现在有新的写法了,但是觉得还是原来的好理解
回复 使用道具 举报
楼主写的不错,学习了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马