iOS 常见算法(二分法、冒泡 、选择)~性能demo

//联系人:石虎  QQ: 1224614774昵称:嗡嘛呢叭咪哄

一、二分法:

/**

 循环的基本次数是log2N,所以:平均时间复杂度:O(log2n)

 辅助空间是常数级别的所以:空间复杂度:O(1)

 稳定性:稳定

 */


int halfFuntion(int a[],int length,int number){

    int start =0;

    int end = length -1;

    int index =0;

    while(start < end) {

        index = start + (end - start)/2;

        if(a[index] == number){

            return index;

        } elseif(a[index] < number){

            start = index + 1;

        } else{ end = index -1;

        }

    }

    return index;

}


二、冒泡排序:

/**

 平均时间复杂度:O(n2)

 空间复杂度:O(1) (用于交换)

 稳定性:稳定

 */


void paoFuntion(int a[],int length){

    

    for (int i =0; i < length -1; i++) {

        

        for (int j =0; j < length -1 - i; j++) {

            

            if (a[j] > a[j+1]) {

                

                int temp = a[j];

                

                a[j] = a[j+1];

                

                a[j+1] = temp;

                

            }

        }

    }

}


三、平均时间复杂度:

/**

 平均时间复杂度:O(n2)

 空间复杂度:O(1) (用于交换和记录索引)

 稳定性:不稳定(比如序列【5 5 3】第一趟就将第一个[5][3]交换,导致第一个5挪动到第二个5后面)

 */


void chooseFuntion(int a[],int length){

    

    for (int i =0; i < length -1; i++) {

        

        for (int j = i +1; j < length ; j++) {

            

            if (a[i] > a[j]) {

                

                int temp = a[j];

                

                a[j] = a[i];

                

                a[i] = temp;

                

            }

        }

    }

}


谢谢!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值