2016藍橋杯假期任務之《三部排序》
標題:三部排序
一般的排序有許多經典演算法,如快速排序、希爾排序等。但實際應用時,經常會或多或少有一些特殊的要求。我們沒必要套用那些經典演算法,可以根據實際情況建立更好的解法。
比如,對一個整型陣列中的數字進行分類排序:
使得負數都靠左端,正數都靠右端,0在中部。注意問題的特點是:負數區域和正數區域內並不要求有序。可以利用這個特點通過1次線性掃描就結束戰鬥!!
以下的程式實現了該目標。
static void sort(int[] x)
{
int p = 0;
int left = 0;
int right = x.length-1;
while(p<=right){
if(x[p]<0){
int t = x[left];
x[left] = x[p];
x[p] = t;
left++;
p++;
}
else if(x[p]>0){
int t = x[right];
x[right] = x[p];
x[p] = t;
right--;
}
else{
_________________________; //程式碼填空位置
}
}
}
如果給定陣列:
25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0
則排序後為:
-3,-2,-16,-5,0,0,0,21,19,33,25,16,18,25
請分析程式碼邏輯,並推測劃線處的程式碼,通過網頁提交
注意:僅把缺少的程式碼作為答案,千萬不要填寫多餘的程式碼、符號或說明文字!!
程式碼:
x[p++]=0;
執行結果:
-3,-2,-16,-5,0,0,0,21,19,33,25,16,18,25
相關推薦
2016藍橋杯假期任務之《三部排序》
標題:三部排序 一般的排序有許多經典演算法,如快速排序、希爾排序等。 但實際應用時,經常會或多或少有一些特殊的要求。我們沒必要套用那些經典演算法,可以根據實際情況建立更好的解法。
2016藍橋杯假期任務之《郵局》
問題描述 C村住著n戶村民,由於交通閉塞,C村的村民只能通過信件與外界交流。為了方便村民們發信,C村打算在C村建設k個郵局,這樣每戶村民可以去離自己家最近的郵局發信。 現在給出了m個備選的郵局,請從中選出k個來,使得村民到自己家最近的郵局的距離和最小。其中兩點
2016藍橋杯假期任務之《關聯矩陣》
問題描述 有一個n個結點m條邊的有向圖,請輸出他的關聯矩陣。 輸入格式 第一行兩個整數n、m,表示圖中結點和邊的數目。n<=100,m<=1000。 接下來m行,每行兩個整數a
2016藍橋杯假期任務之《最大乘積》
問題描述 對於n個數,從中取出m個數,如何取使得這m個數的乘積最大呢? 輸入格式 第一行一個數表示資料組數 每組輸入資料共2行: 第1行給出總共的數字的個數n和要取的數的個數m,1&l
2016藍橋杯假期任務之《十進位制轉十六進位制》
問題描述 十六進位制數是在程式設計時經常要使用到的一種整數的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16個符號,分別表示十進位制數的0至15。十六進位制
2016藍橋杯假期任務之《複數四則運算》
設計複數庫,實現基本的複數加減乘除運算。 輸入時只需分別鍵入實部和虛部,以空格分割,兩個複數之間用運算子分隔;輸出時按a+bi的格式在螢幕上列印結果。參加樣例輸入和樣例輸出。 注意考慮特殊情況,無法計算時輸出字串"error"。 樣例輸入 2 4 * -3
2016藍橋杯假期任務之《2的次冪表示 》
問題描述 任何一個正整數都可以用2進製表示,例如:137的2進製表示為10001001。 將這種2進製表示寫成2的次冪的和的形式,令次冪高的排在前面,可得到如下表達式:137=2^7+2^3+2^0 現在約定冪次用括號來表示,即a^b表示為a(b) 此時,1
2016藍橋杯假期任務之《十六進位制轉八進位制》
問題描述 給定n個十六進位制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為一個正整數n (1<=n<=10)。 接下來n行,每行一個由0~9、大寫字母A~F組成的字串,表示要轉換的十六進位制正整數,每個十六進位制數長度不超過100000。輸出格
2016藍橋杯假期任務之《振興中華》
標題: 振興中華 小明參加了學校的趣味運動會,其中的一個專案是:跳格子。 地上畫著一些格子,每個格子裡寫一個字,如下所示:(也可參見p1.jpg) 從我做起振 我做起振興 做起振興中
2016藍橋杯假期任務之《數字遊戲》
問題描述 棟棟正在和同學們玩一個數字遊戲。 遊戲的規則是這樣的:棟棟和同學們一共n個人圍坐在一圈。棟棟首先說出數字1。接下來,坐在棟棟左手邊的同學要說下一個數字2。再下面的一個同學要從上一
2016藍橋杯假期任務之《比酒量》
有一群海盜(不多於20人),在船上比拼酒量。過程如下:開啟一瓶酒,所有在場的人平分喝下,有幾個人倒下了。再開啟一瓶酒平分,又有倒下的,再次重複...... 直到開了第4瓶酒,坐著的已經所剩無
2016藍橋杯假期任務之《剪格子》
問題描述 如下圖所示,3 x 3 的格子中填寫了一些整數。 +--*--+--+ |10* 1|52| +--****--+ |20|30* 1| *******--+ | 1| 2| 3| +
2013藍橋杯【初賽試題】三部排序
個人資訊 就職: 聚項資訊科技有限公司 職位:中級Java開發工程師 負責:上汽系統開發與維護 院校:河南理工大學 專業:軟體工程12級 郵箱:[email protected] Q Q :10101000101001010111 1101111010
藍橋杯--三部排序
標題:三部排序 一般的排序有許多經典演算法,如快速排序、希爾排序等。 但實際應用時,經常會或多或少有一些特殊的要求。我們沒必要套用那些經典演算法,可以根據實際情況建立更好的解法。 比如,對一個整型陣列中的數字進行分類排序: 使得負數都靠左端,
藍橋杯實例之開發板特點
單片機 以及 三種 one size 分享 總結 為什麽 實驗 本人之前參加了藍橋杯,下面我將總結一下我的經歷,由於本人技能有限,請多見諒! 我之前用過幾種51的板子,說說藍橋杯的板子: 首先開發板設置了三種芯片的插座,說實話,我估計設計者是出於性價比高的考慮,如果
2016藍橋杯演算法訓練——Torry的困惑(基本型)
問題描述 Torry從小喜愛數學。一天,老師告訴他,像2、3、5、7……這樣的數叫做質數。Torry突然想到一個問題,前10、100、1000、10000……個質數的乘積是多少呢?他把這個問題告訴老師。老師愣住了,一時回答不出來。於是Torry求助於會程式設計的你,請你算出前n個質數的乘積。不過,考
2016藍橋杯演算法提高——最大乘積
演算法提高 最大乘積 問題描述 對於n個數,從中取出m個數,如何取使得這m個數的乘積最大呢? 輸入格式 第一行一個數表示資料組數 每組輸入資料共2行: 第1行給出總共的數字
2016藍橋杯省賽java C組第十題 --密碼脫落
暑假以來刷藍橋杯題,實在被暴力所折服,終於碰到一眼前一亮的題~~~ 第一篇線上的部落格,開寫~~~ 密碼脫落 X星球的考古學家發現了一批古代留下來的密碼。 這些密碼是由A、B、C、D 四種植物的種子串成的序列。 仔細分析發現,這些密碼串當初應該是前後對稱的(也就是我們說的映
藍橋杯 歷屆試題之數字遊戲
問題描述 棟棟正在和同學們玩一個數字遊戲。 遊戲的規則是這樣的:棟棟和同學們一共n個人圍坐在一圈。棟棟首先說出數字1。接下來,坐在棟棟左手邊的同學要說下一個數字2。再下面的一個同學要從上一
藍橋杯-程式碼填空之四
身份證校驗—神祕三位數—生日相同概率—四方定理—因數分解—組合數 ①身份證校驗 如果讓你設計個程式,用什麼變數儲存身份證號碼呢?長整數可以嗎?不可以! 因為有人的身份證最後一位是"X" 實際上,除了最後一位的X,不會出現其它字母! 身份證號碼18位 = 17位 + 校驗碼