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

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

一、二分法:

/**

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

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

稳定性:稳定

*/

inthalfFuntion(inta[],intlength,intnumber){

intstart =0;

intend = length -1;

intindex =0;

while(start < end) {

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

if(a[index] == number){

returnindex;

}elseif(a[index] < number){

start = index +1;

}else{ end = index -1;

}

}

returnindex;

}

二、冒泡排序:

/**

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

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

稳定性:稳定

*/

voidpaoFuntion(inta[],intlength){

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

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

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

inttemp = a[j];

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

a[j+1] = temp;

}

}

}

}

三、平均时间复杂度:

/**

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

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

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

*/

voidchooseFuntion(inta[],intlength){

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

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

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

inttemp = a[j];

a[j] = a[i];

a[i] = temp;

}

}

}

}

谢谢!!!

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

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,790评论 0 33
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,753评论 0 15
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,238评论 0 52
  • 贪心算法 贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上...
    fredal阅读 9,308评论 3 52
  • “执子之手,与子偕老”,爱情男女信誓旦旦奔向美好的生活,却不知往往会掉入坑,柴米油盐吃喝拉撒的日常尚能忍受,最不堪...
    无常慢炖阅读 1,298评论 0 0