成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Scala數組排序的快速實現

開發 后端
本文介紹了Scala數組排序的快速實現。對數字數組快速排序的sort(Array[Int])方法展示了Scala語法的簡明特征:復雜度沒有改變,而代碼大大簡化了。

真的是越來越喜歡Scala了,簡潔的語法,清新的風格是我對Scala的印象,感覺使用Scala進行編程真的非常的方便,從Scala的設計思想也能得到不少的啟發,就比如下面的一個對數字數組快速排序的sort(Array[Int])方法,你以前想到過通過這樣的方式實現嗎?

51CTO編輯推薦:Scala編程語言專題

Scala數組排序實現代碼

  1. /**  
  2.  * 快速排序的例子2  
  3.  * @author VWPOLO  
  4.  * < p>2009-8-12< /p>  
  5.  */ 
  6. object TestQuickSort2 {  
  7.   def main(args : Array[String]) : Unit = {  
  8.     var arrays = Array(123,343,5435,23,3213);  
  9.     Console.println("排序前的結果");  
  10.     arrays.foreach((array: Int ) => println(array))  
  11.     arrays = sort(arrays);  
  12.     Console.println("排序后的結果");  
  13.     arrays.foreach((array: Int ) => println(array))  
  14.   }  
  15.     
  16.   def sort(xs: Array[Int]):Array[Int] = {  
  17.     if(xs.length < = 1)  
  18.       xs;  
  19.     else {  
  20.       val pivot = xs(xs.length /2);  
  21.       Array.concat(  
  22.           sort(xs filter (pivot >)),  
  23.                xs filter (pivot ==),  
  24.           sort(xs filter (pivot < ))  
  25.       )  
  26.     }  
  27.   }  

Scala數組排序快速實現代碼點評

sort(Array[Int])方法通過簡明的方式完成了傳統的快速排序功能:

1、判斷參數數組是否為空?如果為空說明排序完成,直接方法參數。

2、如果給定的參數數字不為空,取得數組的中間數。

3、根據中間數對參數數組進行拆分,通過調用Array的filter(p: A => Boolean)方法對數組進行分區并生成一個新的數組,"xs filter (pivot >)" 生成一個新的數組只包含小于pivot的數字,"xs filter (pivot ==)"里面的數組只包含等于pivot的數組,"xs filter (pivot < )"則包含大于pivot的數字,通過sort方法的迭代,完成了排序過程。

4、通過Array.concat方法合并多個數組,返回排序后的結果就行了。

sort方法指定了返回值但是方法塊中沒有"return" 語言,其實加不加都無所謂,Scala編譯器可以自動進行判斷。

Scala數組排序的優點

這種方式和傳統的快速排序方法在時間復雜度和空間復雜度相似,但是代碼卻大大的簡化了,不信你用Java寫一個對數字數組快速的排序方法(要自己寫,使用Collections.sort(List< T>)方法可不算啊)。

Scala引起了大家的大量關注,一些人拿Scala優點進行比較來擁護Scala,然后兩隊人在論壇上打起了口水仗,Scala又不是鈔票,當然不能夠取悅所有人。

本文來自vwpolo的博客《Scala 的快速排序》一文。

【相關閱讀】

  1. Scala Actor:多線程的基礎學習
  2. Scala入門介紹:Hello World
  3. Scala初學者學習資料:main(String[])
  4. 影響Scala語言設計的因素列表
  5. 喜歡Scala編程的四個理由
責任編輯:yangsai 來源: vwpolo的博客
相關推薦

2011-05-25 11:25:23

快速排序Javascript

2009-11-20 09:24:10

PHP多維數組排序

2009-11-16 16:17:45

PHP數組排序

2021-03-04 07:24:28

排序算法優化

2009-10-19 11:26:08

Scala循環數組

2009-11-30 18:59:52

PHP數組排序

2023-05-08 07:55:05

快速排序Go 語言

2009-08-28 11:03:21

C#快速排序

2009-11-24 10:31:22

PHP函數sort()

2022-03-07 09:42:21

Go快速排序

2010-10-08 13:21:03

JavaScript多維數組

2009-07-09 00:25:00

Scala參數化

2011-04-20 15:20:03

快速排序

2020-02-21 08:18:58

JavaScala編程語言

2009-07-22 09:43:30

Scala類型

2014-10-30 15:08:21

快速排序編程算法

2017-04-06 14:10:08

JavaScript數組排序

2009-07-08 12:43:59

Scala ServlScala語言

2009-10-10 09:27:42

Java泛型通用方法

2009-11-25 14:44:34

PHP函數array_
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久五月天 | 欧美一级视频免费看 | 天天视频一区二区三区 | 日本aⅴ中文字幕 | 国产成人jvid在线播放 | 毛片a| 天天综合成人网 | 欧美一级在线观看 | a亚洲精品 | 日韩成人一区二区 | 精品一区二区久久久久久久网站 | 国产精品成人在线 | 毛片一级黄色 | 日韩精品国产精品 | 欧美二区乱c黑人 | 亚洲国产免费 | 精品国产一区二区三区性色av | 亚洲国产精品91 | 免费成人av | 一区中文字幕 | 中文字幕不卡在线观看 | 日韩一区二区在线视频 | 亚洲免费三级 | 9久久精品 | 日本五月婷婷 | 午夜精品久久久久99蜜 | 日韩电影一区二区三区 | 天天操夜夜爽 | 国产精品久久久 | 中文精品视频 | 久久久久中文字幕 | 久久久成人精品 | 日本一二三区电影 | 日韩欧美国产一区二区三区 | 亚洲精品亚洲人成人网 | 一区二区av | 天天爽天天操 | 男人天堂网址 | 九九九久久国产免费 | 欧美精品一区二区在线观看 | 秋霞a级毛片在线看 |