zoukankan      html  css  js  c++  java
  • 【面试编程题】巧妙排序:排序只有1,2,3三个元素的数组,不能统计1,2,3的个数。

    题目来自陈利人的面试微信平台:待字闺中 

    题目描述如下:排序只有1,2,3三个元素的数组,不能统计1,2,3的个数。 希望大家能够相出多多的思路。比如,最小的空间,最少的次数。

    首先的思路肯定是,时间复杂度最高的一种,按顺序扫描数组,遇到一个1,扔到最前面,遇到一个3,扔到最后面,这样的时间复杂度为O(n2)。

    其次可以采用快排的交换思想,第一遍顺序扫描整个数组,分三种情况:1)数字为1,从数组开始后找第一个出现的数字2或者3,与本位置的1相对换;2)数字为2,从2的位置+1往后面找数字1,与本位置的2相对换;3)数字为3,不做处理,因为3本来就应该排在最后面的。这个时间复杂度在最坏情况下貌似还是O(n2

    第三种思路可以是以空间换时间的做法,申请一个与原数组相同大小的空间,扫描数组三遍,依次找出数组中为1,2,3,的元素,并依次添加到数组中。


    其他的待会儿再想,应该还可以优化 

  • 相关阅读:
    thread_Semaphore信号量
    c 语言文本文件判断是否到达结尾的问题
    c语言快速排序算法(转)
    c语言双向循环链表
    gtk+学习笔记(八)
    c语言循环链表的问题
    linux c获取本地时间
    gtk+学习笔记(七)
    gtk+学习笔记(六)
    gtk+学习笔记(五)
  • 原文地址:https://www.cnblogs.com/xiawen/p/3203582.html
Copyright © 2011-2022 走看看