zoukankan      html  css  js  c++  java
  • Swift学习笔记(5)--数组

    数组的下标从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)
    

      

  • 相关阅读:
    Leetcode: Longest Absolute File Path
    Leetcode: Mini Parser
    Leetcode: First Unique Character in a String
    Leetcode: Lexicographical Numbers
    Leetcode: Shuffle an Array
    Leetcode: Ransom Note
    Leetcode: Linked List Random Node
    Socket网络编程--聊天程序(7)
    Socket网络编程--聊天程序(6)
    Socket网络编程--聊天程序(5)
  • 原文地址:https://www.cnblogs.com/anywherego/p/3785575.html
Copyright © 2011-2022 走看看