排序使得陣列負數在正數左邊且按照原來的順序

2021-06-09 23:11:56 字數 662 閱讀 8165

假設一整型陣列存在若干正數和負數,現在通過某種演算法使得該陣列的所有負數在正數的左邊,且保證負數件和正數間元素相對位置不變。時空複雜度要求分別為:o(n),o(1)

例如  

-3 4 2 -1 7 3 -5 

排序後 

-3 -1 -5 4 2 7 3

採用整體冒泡的思想,先從後找到第乙個負數,然後把這乙個負數看成乙個「元素」,再看這個負數前面是正數還是負數,如果是負數,那麼把這個「元素」擴大,如果是正數,就把這個「元素」和這個正數交換位置,從後向前冒泡一遍就ok。

#include using namespace std;

void sort(int *a, int len)

while(i > 0)

if(i == 0)

break; //如果到最前面都是負數,那麼已經排好了,直接返回

int temp = a[i-1];

memcpy(&a[i-1], &a[i], datalen*sizeof(int));//這裡注意memcpy的操作單位為位元組

a[i+datalen-1] = temp;

i--;

}}int main()

; int len = 7;

sort(a, len);

for(int i=0; i

排序使得陣列負數在正數左邊且按照原來的順序

假設一整型陣列存在若干正數和負數,現在通過某種演算法使得該陣列的所有負數在正數的左邊,且保證負數件和正數間元素相對位置不變。時空複雜度要求分別為 o n o 1 例如 3 4 2 1 7 3 5 排序後 3 1 5 4 2 7 3 採用整體冒泡的思想,先從後找到第乙個負數,然後把這乙個負數看成乙個 ...

陣列排序(正數在左,負數在右)

import j a.util.arrays 1,2,3,2,4,5,3,2,4,1,5,3 陣列排序 輸出結果 1,2,3,5,3,4,1,2,4,2,5 要求 1.正數在左,負數在右,2.相對順序不變,3.空間複雜度o 1 public class arraysort arr arr.lengt...

陣列排列陣列裡的正數和負數排序

本篇文章是一篇關於陣列排列的帖子 每日一道理 漫漫人生路,誰都難免會遭遇各種失意或厄運。在淒風苦雨 慘霧愁雲的考驗面前,乙個強者,是不會向命運低頭的。風再冷,不會永遠不息 霧再濃,不會經久不散。風息霧散,仍是陽光燦爛。coding gb2312 將陣列裡的正數排在陣列的後面,正數排在陣列的後面。但不...