第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一道C語言小題目,能不能更簡潔呢

一道C語言小題目,能不能更簡潔呢

蝴蝶刀刀 2019-04-09 20:23:21
題目如下:輸入一個整數數組,調整數組中數字的順序,使得所有奇數位于數組的前半部分,所有偶數位于數組的后半部分。如輸入數組1,4,2,7,8,9,輸出結果為1,7,9,2,4,8。#include#defineN10intis_odd(intnum){if(num%2!=0)return1;}voidinit(int*array){inti;srand(time(NULL));for(i=0;i
查看完整描述

2 回答

?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

最簡單的方法是分配一個新的同樣大的數組,掃描原數組,奇數從前往后放到新數組,偶數從后往前放新數組,然后拷貝回來,釋放新數組。這個代碼太簡單了,我就不寫了。
下面是個更快一點、只需要O(1)空間的算法,也許你會覺得很眼熟。
voidrearrange(int*a,intn)
{
inti=0,j=n-1,t=a[0];
while(i!=j)
{
while(ij--;
if(ia[i]=a[j],i++;
while(ii++;
if(ia[j]=a[i],j--;
}
a[i]=t;
}
                            
查看完整回答
反對 回復 2019-04-09
?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

沒細看代碼,但是看了下樓主的sort方法,時間復雜度是平方級的
其實這個排序可以隨便使用快排、歸并、堆排序來解決(這些算法的平均時間復雜度都是0(NlogN)),對于你的需求,只是額外需要自定義元素比較方法即可:
如果兩個是同一類數字(比如奇數),則按照具體值比較,否則不同類數字(一個是奇數,一個是偶數),則奇數大于任何偶數
                            
查看完整回答
反對 回復 2019-04-09
  • 2 回答
  • 0 關注
  • 344 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號