新聞中心
真的是越來越喜歡Scala了,簡(jiǎn)潔的語法,清新的風(fēng)格是我對(duì)Scala的印象,感覺使用Scala進(jìn)行編程真的非常的方便,從Scala的設(shè)計(jì)思想也能得到不少的啟發(fā),就比如下面的一個(gè)對(duì)數(shù)字?jǐn)?shù)組快速排序的sort(Array[Int])方法,你以前想到過通過這樣的方式實(shí)現(xiàn)嗎?

10余年的茫崖網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)整合營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整茫崖建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“茫崖網(wǎng)站設(shè)計(jì)”,“茫崖網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
編輯推薦:Scala編程語言專題
Scala數(shù)組排序?qū)崿F(xiàn)代碼
- /**
- * 快速排序的例子2
- * @author VWPOLO
- * < p>2009-8-12< /p>
- */
- object TestQuickSort2 {
- def main(args : Array[String]) : Unit = {
- var arrays = Array(123,343,5435,23,3213);
- Console.println("排序前的結(jié)果");
- arrays.foreach((array: Int ) => println(array))
- arrays = sort(arrays);
- Console.println("排序后的結(jié)果");
- arrays.foreach((array: Int ) => println(array))
- }
- def sort(xs: Array[Int]):Array[Int] = {
- if(xs.length < = 1)
- xs;
- else {
- val pivot = xs(xs.length /2);
- Array.concat(
- sort(xs filter (pivot >)),
- xs filter (pivot ==),
- sort(xs filter (pivot < ))
- )
- }
- }
- }
Scala數(shù)組排序快速實(shí)現(xiàn)代碼點(diǎn)評(píng)
sort(Array[Int])方法通過簡(jiǎn)明的方式完成了傳統(tǒng)的快速排序功能:
1、判斷參數(shù)數(shù)組是否為空?如果為空說明排序完成,直接方法參數(shù)。
2、如果給定的參數(shù)數(shù)字不為空,取得數(shù)組的中間數(shù)。
3、根據(jù)中間數(shù)對(duì)參數(shù)數(shù)組進(jìn)行拆分,通過調(diào)用Array的filter(p: A => Boolean)方法對(duì)數(shù)組進(jìn)行分區(qū)并生成一個(gè)新的數(shù)組,"xs filter (pivot >)" 生成一個(gè)新的數(shù)組只包含小于pivot的數(shù)字,"xs filter (pivot ==)"里面的數(shù)組只包含等于pivot的數(shù)組,"xs filter (pivot < )"則包含大于pivot的數(shù)字,通過sort方法的迭代,完成了排序過程。
4、通過Array.concat方法合并多個(gè)數(shù)組,返回排序后的結(jié)果就行了。
sort方法指定了返回值但是方法塊中沒有"return" 語言,其實(shí)加不加都無所謂,Scala編譯器可以自動(dòng)進(jìn)行判斷。
Scala數(shù)組排序的優(yōu)點(diǎn)
這種方式和傳統(tǒng)的快速排序方法在時(shí)間復(fù)雜度和空間復(fù)雜度相似,但是代碼卻大大的簡(jiǎn)化了,不信你用Java寫一個(gè)對(duì)數(shù)字?jǐn)?shù)組快速的排序方法(要自己寫,使用Collections.sort(List< T>)方法可不算啊)。
Scala引起了大家的大量關(guān)注,一些人拿Scala的缺點(diǎn)和Java的優(yōu)點(diǎn)進(jìn)行比較進(jìn)行批評(píng)Scala,"另一些人拿Java缺點(diǎn)和Scala優(yōu)點(diǎn)進(jìn)行比較來擁護(hù)Scala,然后兩隊(duì)人在論壇上打起了口水仗,Scala又不是鈔票,當(dāng)然不能夠取悅所有人。
本文來自vwpolo的博客《Scala 的快速排序》一文。
【相關(guān)閱讀】
- Scala Actor:多線程的基礎(chǔ)學(xué)習(xí)
- Scala入門介紹:Hello World
- Scala初學(xué)者學(xué)習(xí)資料:main(String[])
- 影響Scala語言設(shè)計(jì)的因素列表
- 喜歡Scala編程的四個(gè)理由
分享題目:Scala數(shù)組排序的快速實(shí)現(xiàn)
標(biāo)題來源:http://www.dlmjj.cn/article/dpiedhs.html


咨詢
建站咨詢
