数组的下标从0开始计数,相关方法属性涉及到下标时也从0开始计数
1.定义:
//1.可变数组 var cityArray = ["Portland","San Francisco","Cupertino"] //2.不可变数组 let cityArray2 = ["Portland","San Francisco","Beijing"] //3.空数组 var animalArray = String[]() var animalAgeArray = Int[]()
2.基本方法:统计总数,判断非空
//1.统计总数 var cityArray: String[] = ["Portland","San Francisco","Cupertino"] let count = cityArray.count //2.判断非空 if cityArray.isEmpty { println("Empty") }else{ println("Not Empty") }
3.遍历
var animalArray: String[] = ["Dog", "Cat", "Fish", "Owl" ] //1.元素遍历 for animal in animalArray { println(animal) } //2.带下标遍历 for(index,animal) in enumerate(animalArray) { println("The (animal) is at index:(index)") } for var i = 0; i < animalArray.count; i++ { println(animalArray[i]) } for i in 0..animalArray.count { println(animalArray[i]) }
4.添加元素或者子数组
//1.添加单个元素 var cityArray: String[] = ["Portland","San Francisco","Cupertino"] cityArray.append("Seattle") //函数添加 cityArray += "Seattle" //运算符重载添加 //2.添加子数组 var cityArrayA: String[] = ["Portland","San Francisco","Cupertino","Seattle"] var cityArrayB: String[] = ["Vancouver", "Los Angeles", "Eugene"] cityArrayA += ["Vancouver", "Los Angeles", "Eugene"] //固定子数组 cityArrayA += cityArrayB; //变量子数组
5.改变数组元素
注:改变多个元素,如果下标与元素的数量不一致,以下标做多退少补
var cityArray: String[] = ["Portland","San Francisco","Cupertino","Seattle","NewYork"] //1.改变单个元素 cityArray[0] = "Oregon" //2.改变多个元素,如果下标与元素的数量不一致,以下标做多退少补 //2.1 相等时 var cityArray0 = cityArray cityArray0[0...2] = ["Beijing","Shanghai","Guangzhou"] println(cityArray0) //[Beijing, Shanghai, Guangzhou, Seattle, NewYork] //2.2 下标多于元素时,原数组中多出的下标数据被remove出原数组,即多退 var cityArray2 = cityArray cityArray2[0...3] = ["Beijing","Shanghai","Guangzhou"] println(cityArray2) //[Beijing, Shanghai, Guangzhou, NewYork] //2.3 下标少于元素时,将多出的元素添加到原数组,即少补 var cityArray3 = cityArray cityArray3[0...1] = ["Beijing","Shanghai","Guangzhou"] println(cityArray3) //[Beijing, Shanghai, Guangzhou, Cupertino, Seattle, NewYork]
6.删除元素
//1.删除指定元素 var animalArray: String[] = ["Dog", "Cat", "Fish", "Owl", "Beaver"] animalArray.removeAtIndex(4) println(animalArray) //[Dog, Cat, Fish, Owl] //2.删除最后一个元素 var animalArray2: String[] = ["Dog", "Cat", "Fish", "Owl" ] animalArray2.removeLast() //[Dog, Cat, Fish] println(animalArray2) //3.删除所有元素 var animalArray3: String[] = ["Dog", "Cat", "Fish", "Owl" ] animalArray3.removeAll() println(animalArray3) //[]
注:如果你想保留原来被删除的元素,可以使用let item = array.removeFunction() 来保留
var animalArray: String[] = ["Dog", "Cat", "Fish", "Owl", "Beaver"] let item = animalArray.removeAtIndex(4) println(item) //Beaver
7.排序
基本排序
var animalArray: String[] = ["Dog", "Cat", "Fish", "Owl" ] sort(animalArray) //The array values are now [Cat, Dog, Fish, Owl]
反向重排
var animalArray: String[] = ["Dog", "Cat", "Fish", "Owl" ] animalArray.reverse() //The array values are now ["Owl", "Fish", "Cat", "Dog"]
自定义快速排序
func quicksort_swift(inout a:Int[], start:Int, end:Int) { if (end - start < 2){ return } var p = a[start + (end - start)/2] var l = start var r = end - 1 while (l <= r){ if (a[l] < p){ l += 1 continue } if (a[r] > p){ r -= 1 continue } var t = a[l] a[l] = a[r] a[r] = t l += 1 r -= 1 } quicksort_swift(&a, start, r + 1) quicksort_swift(&a, r + 1, end) } var a_swift:Int[] = [0,5,2,8,1234,-1,2] let swift_start:UInt64 = mach_absolute_time(); println(swift_start) quicksort_swift(&a_swift, 0, a_swift.count) let swift_stop:UInt64 = mach_absolute_time(); println(swift_stop) println(a_swift)