雙色 三色排序問題

2022-08-30 18:48:15 字數 1189 閱讀 6530

實現乙個函式,給定乙個陣列,要求使得陣列中負數在所有正數的前面

實現乙個函式,給定乙個陣列,要求使得陣列中負數在前正數在後零在中間

1 #include2 #include34//

輸出陣列元素

5void print(int *arr, int

len);6//

交換兩個數

7void swap(int *left, int *right);8//

將所有正數排在後面

9void sort_two(int *arr, int

len);

10//

將負數排在前面,0放在中間,整數排在後面

11void sort_three(int *arr, int

len);

1213

intmain()14;

16 printf("

排序前:\n");

17 print(arr,11

);18

19 printf("

排序後:\n");

20//

sort_two(arr,11);

21 sort_three(arr,11

);22 print(arr,11

);23

24return0;

25}2627

//將所有正數排在後面,實質是雙色排序問題,類似快排的思想

28void sort_two(int *arr, int

len)

2945}46

47//

實質是三色排序問題

48void sort_three(int *arr, int

len)

4965

else

//正數

6670}71

}7273void swap(int *left, int *right)

7479

80void print(int *arr, int

len)

81

執行結果:

三色排序問題

輸入乙個整型陣列,每個元素在0 2之間,其中0,1,2分別代表紅 白 藍。現要求對陣列進行排序,相同顏色的在一起,而且按紅白藍順序先後排列。要求時間複雜度為o n 最容易想到的是排序,比如快排,歸併,堆排等,但它們的時間複雜度為o nlogn 與題意不符。第二種想到的是計數排序,掃瞄一遍過去,分別記...

Arduino使用三色 雙色LED

1 三色led 然後是這兩種led的實物圖,上搜了一下,這種三色led,有乙個gnd引腳的好像叫做共陰rgb全彩led發光二極體,總共有四個引腳 gnd引腳接arduino的gnd引腳,r g b三個引腳分別對應著red green blue,這三個引腳應該接arduino中的模擬引腳。顯示三色的原...

nowcoder 三色排序

有乙個只由0,1,2三種元素構成的整數陣列,請使用交換 原地排序而不是使用計數進行排序。給定乙個只含0,1,2的整數陣列a及它的大小,請返回排序後的陣列。保證陣列大小小於等於500。測試樣例 0,1,1,0,2,2 6 返回 0,0,1,1,2,2 定義乙個左指標,乙個右指標。當遍歷到0時,和左指標...