设任意n个整数存放于数组a(1:n)中,试编写算法,将所有正数排在所有负数前面(要求算法时间复杂度为o(n))
时间: 2023-04-21 07:03:41 浏览: 249
一个未排序的整数数组,请找出其中没有出现的最小的正整数。
5星 · 资源好评率100%
算法步骤如下:
1. 定义两个指针i和j,分别指向数组a的第一个元素和最后一个元素。
2. 当i<j时,执行以下循环:
a. 如果a[i]为正数,i++。
b. 如果a[j]为负数,j--。
c. 如果a[i]为负数,a[j]为正数,交换a[i]和a[j]的值,i++,j--。
3. 循环结束后,所有正数都排在了所有负数的前面。
算法时间复杂度为O(n),因为只需要遍历一次数组。
阅读全文