Merge pull request #93 from yangchuz/master
Scala implementation of the algorithms
This commit is contained in:
commit
0a35243046
68
scala/11_sorts/Sorts.scala
Normal file
68
scala/11_sorts/Sorts.scala
Normal file
@ -0,0 +1,68 @@
|
||||
import scala.util.control.Breaks._
|
||||
|
||||
/**
|
||||
* 冒泡排序、插入排序、选择排序
|
||||
*
|
||||
* Author: yangchuz
|
||||
*/
|
||||
object Sorts {
|
||||
def main(args: Array[String]): Unit ={
|
||||
// println(bubbleSort(Array(0, 6, 2, 3, 8, 5, 6, 7), 8).mkString(", "))
|
||||
// println(insertSort(Array(0, 6, 2, 3, 8, 5, 6, 7), 8).mkString(", "))
|
||||
println(selectionSort(Array(0, 6, 2, 3, 8, 5, 6, 7), 8).mkString(", "))
|
||||
}
|
||||
|
||||
def bubbleSort(arr: Array[Int], n:Int): Array[Int] = {
|
||||
val n = arr.length
|
||||
breakable {
|
||||
for(i <- (n-1) to (1, -1)){
|
||||
var flag = false
|
||||
for(j <- 0 until i){
|
||||
if(arr(j) > arr(j+1)){
|
||||
val tmp = arr(j)
|
||||
arr(j) = arr(j+1)
|
||||
arr(j+1) = tmp
|
||||
flag = true
|
||||
}
|
||||
}
|
||||
if(!flag){
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
arr
|
||||
}
|
||||
|
||||
def insertSort(arr: Array[Int], n:Int): Array[Int] = {
|
||||
for(i <- 1 until n){
|
||||
val tmp = arr(i)
|
||||
breakable{
|
||||
for(j <- (i-1) to (0, -1)){
|
||||
if(tmp < arr(j)){
|
||||
arr(j+1) = arr(j)
|
||||
}else{
|
||||
arr(j+1) = tmp
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
arr
|
||||
}
|
||||
|
||||
def selectionSort(arr: Array[Int], n:Int): Array[Int] = {
|
||||
for(i <- 0 until n){
|
||||
var min = i
|
||||
for(j <- (i + 1) until n){
|
||||
if(arr(j) < arr(min)){
|
||||
min = j
|
||||
}
|
||||
}
|
||||
|
||||
val tmp = arr(i)
|
||||
arr(i) = arr(min)
|
||||
arr(min) = tmp
|
||||
}
|
||||
arr
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user