1. 程式人生 > >2016藍橋杯假期任務之《三部排序》

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位 + 校驗碼