• 数组的运用、排序


    问题描述                                                 

      在别人的博客上看到起面试经历中的面试题,自己也想实现下,说实话,这道题以前做数据结构的课程设计是做过的,而且这样的题,当时还问了同学的,可是没有自己想,没有上心,到现在也就影响不太深刻了,当时可能也没有很好地理解数组的使用。

    给定一个整型数组,输入一个数字N时,要输出数组中第N大的数,并把它原来的下标输出来,要求用C语言实现,时间复杂度要求最小,20分钟时间。

    代码                                                        

    View Code

    总结                                                        
        加深印象,不过还没有实现其时间复杂度最小的要求,排序的算法现在还不是很熟悉,不过会看到的,到时再来改进一下这个题的解法。

    最后作者还说 面试官问了不用辅助空间怎么实现。 也就是说不允许定义一个存放下标的数组。

    刚一出Intel大门,突然想到了解决不用辅助空间的方法,唉~反应太迟钝了,第一次遍历下数组,知道了数组最大元素。INT类型的是4个字节,一般整数不会完全用完,可以用4个字节的前2个字节存放它们的下标(前提是这个数小于2^16),这样每次冒泡时,比较它们的低16位就行了,同时下标也跟着元素的交换走了。

    这个我不是很懂,怎样让前两个字节存放它们的下标,然后再比较低16位。

      今天懂了怎么让前两个字节存放它们的下标,再比较低16位的做法了,代码如下:

    View Code
  • 相关阅读:
    Legacy和UEFI,MBR和GPT的区别
    如何升级laravel5.4到laravel5.5并使用新特性?
    value toDF is not a member of org.apache.spark.rdd.RDD
    spark能传递外部命名参数给main函数吗?
    spark在idea中本地如何运行?(处理问题NoSuchFieldException: SHUTDOWN_HOOK_PRIORITY)
    工作随笔-20171012
    maven使用实战
    介绍maven构建的生命周期
    python中的pip
    python中的None
  • 原文地址:https://www.cnblogs.com/zhangyingai/p/7099108.html
Copyright © 2020-2023  润新知