黑马程序员技术交流社区

标题: 很重要的东西,听说面试必考题,大家也都看看吧 [打印本页]

作者: huayu    时间: 2015-10-6 21:38
标题: 很重要的东西,听说面试必考题,大家也都看看吧
#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;
}
作者: CherryQueen    时间: 2015-10-6 21:39
楼主写的不错,学习了。
作者: huayu    时间: 2015-10-6 21:40
这是以前视频的做法,现在有新的写法了,但是觉得还是原来的好理解
作者: yuezuiqingfeng    时间: 2015-10-6 21:47
嗯      //将数组从大到小排序
    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;
        }
    }

据说这种因为少了几次排序,节省内存些。
楼主的这种,理解着用着都比较省心。
作者: guaiqiaorener    时间: 2015-10-6 22:00
谢谢分享
作者: sclea    时间: 2015-10-6 22:18
方法都不错,各有各的感觉
作者: wwf707542865    时间: 2015-10-6 22:46
面试还有点远,不过不妨碍我看看
作者: jing397    时间: 2015-10-7 13:09
支持支持!!!
作者: 朱玉丁    时间: 2015-10-7 21:43
赞,顶一个
作者: 洪吉童    时间: 2015-10-7 22:11
先收藏了,有空看看
作者: 哐啷    时间: 2015-10-7 22:39
冒泡理解起来比排序简单点




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