Swift _ 冒泡排序 (2016-07-13)

冒泡排序:
原理不好解释,就是循环将当前数与下一个数比较大小,根据需要(升序或者降序)交换位置

//完成两个数的交换
func switchNum(inout num1:Double,inout num2:Double)
{
    num1 = num1 + num2
    num2 = num1 - num2
    num1 = num1 - num2
}


/**
 冒泡排序

 - parameter arr:    数组
 - parameter shunxu: 排序顺序(1为升序,2为降序)
 */
func maopao(inout arr:[Double],shunxu:Int)
{
    for var i:Int = 0 ; i < arr.count - 1 ; i++
    {
        for var j:Int = 0;j < arr.count - i - 1; j++
        {
            if shunxu == 1
            {
                if arr[j] > arr[j+1]
                {
                    switchNum(&arr[j], num2: &arr[j+1])
                }
            }
            else
            {
                if arr[j] < arr[j+1]
                {
                    switchNum(&arr[j], num2: &arr[j+1])
                }
            }
        
        }
    }
}
//给个数组,进行排序
var arr:[Double] = [9,41,2,8,63,45,14]
maopao(&arr, shunxu: 1) //升序
print(arr)
maopao(&arr, shunxu: 2) //降序
print(arr)

输出:
[2.0, 8.0, 9.0, 14.0, 41.0, 45.0, 63.0]
[63.0, 45.0, 41.0, 14.0, 9.0, 8.0, 2.0]
Program ended with exit code: 0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 曾经有一份美好的爱情放在我的面前我没有珍惜。等到失去后才后悔莫及。如果可以再对小李说。毛欣想说。这辈子无缘再牵手。...
    毛欣与小李阅读 2,708评论 0 13
  • 看了一篇关于移动端路由的文章一步步构建iOS路由, 感觉写的多, 写的也很好, 所以我决定去看看源码, 在用我自己...
    阿瑟李阅读 5,553评论 12 32
  • 文/王海懿 考研成绩公布的那一天,磊子知道自己再次落榜了,这是他第四次考研。 磊子觉得自己对不住沐雪,于是想给沐雪...
    懿想天开why阅读 1,277评论 0 5
  • 这里要说个小秘密,我觉得最无聊的一次演讲,居然发生在我结婚的那一天。如果是平时,我大可以直接走人或是玩玩手机,顺便...
    MiniKay阅读 423评论 0 0
  • 首先我不是个能折腾的孩子,这多少跟我父母的心性有关,从小到大耳濡目染,和气生财,平平顺顺,轻松自在,所以我选择的旅...
    流澜葛葛阅读 170评论 0 1