用Swift写的一个归并排序算法(递归法)

func Merge(sourceArray: NSMutableArray,tempArray: NSMutableArray,startIndex: Int,midindex: Int,endindex: Int) {
    var i = startIndex
    var j = midindex + 1
    var k = startIndex
        
    while(i != midindex+1 && j != endindex+1) {
        let one = sourceArray[i] as! Int
        let two = sourceArray[j] as! Int
        if one >= two {
            tempArray.insertObject(sourceArray[j],atIndex: k)
            j += 1
            k += 1
        }else {
            tempArray.insertObject(sourceArray[i],atIndex: k)
            i += 1
            k += 1
        }
    }
    while(i != midindex+1) {
        tempArray.insertObject(sourceArray[i],atIndex: k)
        i += 1
        k += 1
    }
    while(j != endindex+1) {
        tempArray.insertObject(sourceArray[j],atIndex: k)
        j += 1
        k += 1
    }
        
    for i in startIndex...endindex {
        sourceArray.replaceObjectAtIndex(i,withObject: tempArray[i])
    }
}
    
func MergeSort(sourceArray: NSMutableArray,endindex: Int) {
    var midindex = 0
    if startIndex < endindex {
        midindex = (startIndex + endindex)/2
        MergeSort(sourceArray,tempArray: tempArray,startIndex: startIndex,endindex: midindex)
        MergeSort(sourceArray,startIndex: midindex+1,endindex: endindex)
        Merge(sourceArray,midindex: midindex,endindex: endindex)
    }
}
从小到大排列。

Swift 归并排序的更多相关文章

  1. nsmutablearray – Sprite Kit iOS7 – SKNode UserData属性不存储值

    谢谢解决方法userData属性最初为零.您必须先创建一个字典并进行分配:

  2. ios – UITableView reloadData什么都不做(UITableView不是nil)

    如果您需要查看更多我的代码,请告诉我.我也看了一下beginUpdates和endUpdates的方法,但在我看来,他们一度关注一些变化和用户交互性.我想根据用户选择重新加载整个表.或者还有另一种更好的方法吗?如果没有,请仔细检查并验证myTableView委托是否设置正确.如果您已正确地将表连接到笔尖并且您有一个插座,您也可以在代码中设置它,即在viewDidLoad方法中,通过设置:

  3. 模糊地使用’下标’ – ios 9 Swift 2.0

    我在xcode7.0上使用Swift2.0编写iosapp.在更新到最新版本的xCode7.1之前,完全相同的代码完全正常更新后,我收到此错误:Ambiguoususeof‘subscript’在这些方面:这是全班:Theoriginallibrary解决方法编译器不知道self.itemAttributes[indexPath.section]返回的内容,因为它定义为NSMutableArray

  4. ios – coredata – 将一个属性提取到数组中

    目的:我想从数据库中获取一个属性(从实体)到数组的值.例实体名称=员工Attribute=employeeID我只想把所有的employeeID都填入一个数组/集合.题以下是我的实现,我只是觉得这是一个圆滑的方式,我想知道是否有更好的方法来做到这一点.码解决方法你可以避免最后一个for循环,代替,尝试这个,

  5. ios – 按键键入字典的Swift排序数组,其中value是可选的AnyObject

    我正在直接从Parse中提取一系列字典并将它们显示在表格中.所以我真的很想处理我所掌握的数据结构.PFObject是[String:AnyObject?解决方法Swift无法比较任何两个对象.您必须先将它们转换为特定类型:如果有多个字典没有指定键的值,它们将被放置在结果数组的末尾,但它们的相对顺序是不确定的.

  6. ios – TabBarController返回null

    我在故事板中有一个tabbarcontroller作为初始视图控制器这是如何返回null的本来就是我想要做的为什么我会变空?

  7. ios – UITableView不更新

    我正在使用CoreData模型和UITableViewController表视图.我的模型似乎工作得很好,但是当我向模型添加实体时,我的表视图没有更新.我相信我的模型正在工作的原因是因为当我添加一个实体时,在运行时没有任何内容显示在视图中,但是如果我剪切任务然后启动它,那么我之前创建的实体突然显示在表视图中.这是我的表视图控制器–AudioTableViewController.hAudioTab

  8. swift实现排序算法

    swift实现排序算法swift插入排序funcinsertionSort(){varx,y,key:Intfor(x=0;x-1;y--){if(key

  9. swift plist文件

    1.创建pliet文件newfile->Resource->PropertyList输入plist文件名称2.Root和Item的设置Root类型设置为Array,item类型设置为dictionary,3.4.读取

  10. swift 中的数组

    swift可无缝的将oc中的NSArray和NSMubableArray转换为swift对象直接使用.不过在swift中本身也有个Array.他们之间还有不少的区别.1.swift找那个的Array是结构体,而oc中的两个数组是类2.swiftarray的声明方式比较灵活letarr1:[String]=[]letarr2=[String]()letarr3=Array()leta

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部