Swift编程基础之排序(三)-----实战篇

来源:互联网 发布:湘潭湖南软件职业学院 编辑:程序博客网 时间:2024/05/26 09:57

通过上两篇的讲解,我们将排序的基础就基本说完了,那么我们加上循环向下推广就会推出排序算法。Come on!

1、选择排序

//       选择排序是指每执行一次,会将数组元素最小(升序)或最大的元素(降序)放到正确位置/*     选择排序(两两相比,第一次会固定一个元素,然后比较根据需求进行从小到大或从大到小的交换)        var arr = [9,6,4,3,1]  //升序        第一次 :        arr[0], arr[1]  6,9,4,3,1        arr[0], arr[2]  4,9,6,3,1        arr[0], arr[3]  3,9,4,4,1        arr[0], arr[4]  1,9,6,4,3        第二次 :            arr[1],arr[2]  1,6,9,4,3            arr[1],arr[3]  1,4,9,6,3            arr[1],arr[4]  1,3,9,6,4        第三次 :            arr[2],arr[3]  1,3,6,9,4            arr[2],arr[4]  1,3,4,9,6        第四次 :            arr[3],arr[4]  1,3,4,6,9*/var arr = [9,6,4,3,1]for i in 0..<arr.count-1{    for j in i+1..<arr.count{        if arr[i] > arr[j]{            let tmp = arr [i]            arr[i] = arr[j]            arr[j] = tmp        }    }}

大家理解之后,我们将我们得到的代码段封装成一个函数,那么大家就可以随时随地调用了。

  //选择排序func  selectionSort(inout arr:Array)->Void{    for i in 0..<arr.count-1{        for j in i+1..<arr.count{            if arr[i] > arr[j]{                let tmp = arr [i]                arr[i] = arr[j]                arr[j] = tmp            }        }    }}

3、冒泡排序

//  冒泡排序值在排序时,将数组中相邻两个元素的值进行比较,将较小或较大的排序到正确的位置/*        var arr = [9,6,4,3,1]  // 升序         第一次:            arr[0],arr[1]  6,9,4,3,1            arr[1],arr[2]  6,4,9,3,1            arr[2],arr[3]  6,4,3,9,1            arr[3],arr[4]  6,4,3,1,9        第二次:            arr[0],arr[1]  4,6,3,1,9            arr[1],arr[2]  4,3,6,1,9            arr[2],arr[3]  4,3,1,6,9        第三次:            arr[0],arr[1]  3,4,1,6,9            arr[1],arr[2]  3,1,4,6,9        第四次:            arr[0],arr[1]  1,3,4,6,9*/var arr1 = [9,6,4,3,1]for i in 0..<arr1.count-1{   //冒泡执行的次数    for j in i+1..<arr1.count-1-i{        if arr1[j] > arr1[j+1]{            let tmp = arr1[j]            arr1[j] = arr1[j+1]            arr1[j+1] = tmp        }    }}

同理,我也将冒泡排序封装成一个函数,方便大家调用。

// 冒泡排序函数func  selectionSort(inout arr:Array)->Void{   for i in 0..<arr1.count-1{   //冒泡执行的次数    for j in i+1..<arr1.count-1-i{        if arr1[j] > arr1[j+1]{            let tmp = arr1[j]            arr1[j] = arr1[j+1]            arr1[j+1] = tmp        }     }  }}

以上就是两种常用的排序算法,授人以鱼不如授人以渔嘛,所以我希望将这种分析方法分享给大家,那么其他的几种排序也就不在话下了,需要用到的时候就可以自己总结封装成函数啦。谢谢大家!

0 0