课程设计题目:整型数组按奇偶排序
一、问题描述
已知数组 A[n] 中的元素为整型,设计算法将其调整为左右两部分,左边的元素为奇数,右边的元素为偶数,并要求算法的时间复杂度为 O ( n ) O(n) O(n) 。
二、基本要求
- 将数组按奇偶性排序,奇数在左,偶数在右。
三、概要设计
1. 算法的设计
采用快速排序的思路:设置两个指针l
和r
,分别从左向右和从右向左扫描,当l
指向偶数且r
指向偶数时,交换数值。
伪代码如下
void sort_by_parity(int *first, int *last)
{
last--;
while (first < last)
{
while (first指向奇数且没越界) first++;
while (last指向偶数且没越界) last--;
swap(*first, *last);
first+