面试题-算法:乱序整数数组中将奇数放到左边,偶数放到右边

如题:实现要求,空间复杂度为o(1).
如果没有这个要求的话,这个题目相信很多人都会手到擒来。
思路:既然空间复杂度为o(1),那就得充分利用数组自己的空间,在数组内部进行元素的交换来达到目的,思路与快速排序类似,从左边找到偶数,再从右边找到奇数,进行交换,直到左右相遇。
上代码:

void sort(int nums[], int count) {
    if (count == 0) {
        return;
    }
    int s = 0, e = count - 1;
    while (s < e) {
        while (nums[s] % 2 != 0 && s < e) {
            s ++;
        }
        while (nums[e] % 2 == 0 && s < e) {
            e --;
        }
        if (s == e) {
            return;
        }
        int tem = nums[s];
        nums[s] = nums[e];
        nums[e] = tem;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数组的基本概念 定义: 通常由一组相同类型的元素的集合所组成的结构(javascript允许数组中包含不同类型的元...
    squall1744阅读 534评论 0 2
  • 1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不...
    曲终人散Li阅读 3,357评论 0 19
  • 拍于大埔县西河镇本草源(手机拍)。 百花凋谢的冬天,这里的山茶花静静绽放:白、素、净,美自无言,却动人心弦。
    江夏月阅读 327评论 2 1
  • 李延年歌 song of yannian li 汉 · 李延年 han dynasty·yannian li 北方...
    SaraWang357阅读 231评论 0 1
  • 由于工作的经常需要写一些Web前端的页面用于展现数据,在实际应用过程中发现使用表格来展现数据与信息更方便与直...
    luckydaxian阅读 23,699评论 8 59