您的位置:首页 > 移动开发 > IOS开发

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

2017-08-13 14:48 309 查看
//联系人:石虎 
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;

                

            }

        }

    }

}

谢谢!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息