`
tiandizhiguai
  • 浏览: 45542 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

奇偶排序

阅读更多
题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,
所有偶数位于数组的后半部分。要求时间复杂度为O(n)。
针对这个题目,我们可以维护两个指针,一个指针指向数组的第一个数字,向后移动;一个指针指向最后一个数字,向前移动。分四种情况:
1.如果后一个指针指向奇数而前一个指针指向偶数,则交换两个数;之后,前一个指针继续向后移动,后一个指针继续向前移动;
2.如果后一个指针指向奇数而前一个也指针指向奇数,则前一个指针继续向后移动,后一个指针位置不变;
3.如果后一个指针指向偶数而前一个指针也指向偶数,则前一个指针位置不变,后一个指针继续向前移动;
4.如果后一个指针指向偶数而前一个指针指向奇数,则前一个指针继续向后移动,后一个指针继续向前移动;
代码如下:
public class Test {
    
    public static void main(String[] args) 
    {
        oddEvenSort(new int[]{1,2,3,4,5,6,6,6,66,7,8,9,10,11,1,1,1,1,1,14,15});
    }
    
    public static void oddEvenSort(int[] arr)
    {
        int temp;
        
        for(int i = 0, j = arr.length-1; i < j;)
        {
            if(arr[j]%2 == 1)
            {
                if(arr[i]%2 == 0)
                {
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                    
                    i++;
                    j--;
                }
                else
                {
                    i++;
                }
            }
            else
            {
                if(arr[i]%2 == 0)
                {
                    j--;
                }
                else
                {
                    i++;
                    j--;
                }
            }
        }
        
        for(int i : arr)
        {
            System.out.print(i + ","); 
        }
    }
}

各位有什么更好的方法,欢迎指正!
0
1
分享到:
评论

相关推荐

    MPI奇偶排序源代码+可运行程序

    标题中的“MPI奇偶排序源代码+可运行程序”指的是一个使用MPI(Message Passing Interface)实现的并行算法,用于进行奇偶排序。这个程序基于MPICH2版本的MPI库,该库是MPI标准的一个开源实现,适用于分布式内存的多...

    奇偶排序算法的并行实现

    利用mpi进行奇偶排序的实现,有较好的性能和可扩展性

    整数奇偶排序(信息学奥赛一本通-T1181).rar

    整数奇偶排序,顾名思义,是一种对整数序列进行特定规则的排序方法,主要出现在信息学竞赛中,例如“信息学奥赛一本通-T1181”这个题目。这种排序要求将给定的整数序列按照奇数和偶数的顺序排列,即先排列所有奇数,...

    并行计算mpi奇偶排序

    运用mpi实现奇偶排序,在不同的处理器之间通过消息传递完成奇偶index的数的交换,实现最终的数列排序

    MPI实现的奇偶排序(ODD_EVEN)

    代码稍微有点儿缺陷,默认是10个数据,用5个进程进行排序。所以其中的比较函数写死了,大家可以自己重新改一下这里。

    使用顺序表实现奇偶排序

    【顺序表实现奇偶排序】 在给定的问题中,我们需要对一个整数顺序表进行特殊排序,即把所有的奇数移到偶数的前面。这里我们使用C++编程语言来实现这个算法。首先,顺序表是一种数据结构,它将元素存储在连续的内存...

    汇编语言奇偶排序资源代码

    【汇编语言奇偶排序资源代码】是一个与软件和插件相关的主题,主要涉及的是使用汇编语言实现的一种特定的排序算法——奇偶排序。在计算机科学中,排序算法是处理数据的重要工具,它们用于组织和优化数据结构,提高...

    java数据结构与算法之奇偶排序算法完整示例

    奇偶排序算法是一种基于位置奇偶性的排序算法,它把数组分为奇数位置和偶数位置的两部分分别进行排序。该算法的基本思想是在一个未排序的序列中,先将所有奇数位置的元素(即1,3,5...位置的元素)进行排序,再将...

    php-leetcode题解之按奇偶排序数组2.zip

    在本压缩包“php-leetcode题解之按奇偶排序数组2.zip”中,主要包含的是使用PHP语言解决LeetCode算法题目的代码实现,题目要求是将一个整数数组按照奇偶性进行排序,即所有奇数位于前面,偶数位于后面。这个任务涉及...

    按奇偶排序数组1

    题目 "按奇偶排序数组1" 是一个编程挑战,源自著名的在线编程平台 LeetCode。它的目标是给定一个非负整数数组,重新排列数组,使得所有偶数元素出现在奇数元素之前。这个任务可以通过双指针技术来解决,这是一种在...

    php-leetcode题解之实现按奇偶排序数组.zip

    在本压缩包“php-leetcode题解之实现按奇偶排序数组.zip”中,主要包含了一个关于使用PHP解决LeetCode算法问题的资源。这个题目要求我们实现一个功能,即对一个整数数组按照奇偶性进行排序,使得所有奇数位于前半...

    c语言面试题之双指针按奇偶排序数组.zip

    针对"双指针按奇偶排序数组"的问题,我们需要一个包含整数的数组,并按照以下规则重新排列:所有偶数应该排在前面,所有奇数应该排在后面,但保持原有顺序不变(即相对位置)。例如,如果原数组为[1, 2, 3, 4, 5],...

    C语言 奇偶排序算法详解及实例代码

    C语言奇偶排序算法 奇偶排序,或奇偶换位排序,或砖排序,是一种相对简单的排序算法,最初发明用于有本地互连的并行计算。这是与冒泡排序特点类似的一种比较排序。该算法中,通过比较数组中相邻的(奇-偶)位置数字...

    c语言实现奇偶排序算法

    =====第2题:奇偶排序(一)===== 总时间限制:1000ms内存限制:65536kB描述输入十个整数,将十个整数按升序排列输出,并且奇数在前,偶数在后。输入输入十个整数输出按照奇偶排序好的十个整数 代码如下:#include #...

    信息学奥赛一本通代码1181:整数奇偶排序

    信息学奥赛一本通代码1181:整数奇偶排序

    python-leetcode题解之第905题按奇偶排序数组

    python python_leetcode题解之第905题按奇偶排序数组

    python-leetcode题解之第922题按奇偶排序数组II

    python python_leetcode题解之第922题按奇偶排序数组II

    简单讲解奇偶排序算法及在Java数组中的实现

    奇偶排序算法是一种简单的排序方法,它通过交替对数组中的奇数索引和偶数索引元素进行排序来实现整体的排序。这个算法的核心思想是将数组分为两个部分:奇数索引元素(奇数列)和偶数索引元素(偶数列),然后分别对...

Global site tag (gtag.js) - Google Analytics