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;
}
}
}
}
谢谢!!!
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;
}
}
}
}
谢谢!!!
相关文章推荐
- iOS常见算法(二分法 冒泡 选择 快排)
- php 常用常见算法 (冒泡,选择,插入 ...TBD)
- iOS 算法面试题(冒泡排序、选择排序、链表逆序)~demo
- StringBuffer和一些算法 冒泡 二分 选择
- 冒泡,选择,插入三大基本排序解析以及Demo
- 简单排序算法:冒泡、选择、插入
- 几个有关iOS的几个常见问题-----为什么选择OC语言
- Java之美[从菜鸟到高手演变]之常见的几种排序算法-插入、选择、冒泡、快排、堆排等
- 常见的排序算法(Java实现):冒泡、插入、选择、快速排序
- 转【算法之常用排序算法(二)】常用排序算法性能比较,及常见面试题
- iOS开发中使用算法之冒泡法
- iOS开发--图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序
- 三种初级排序算法(冒泡、选择、直接插入)java实现及其性能比较
- 【4.1】算法递归 冒泡,选择插入排序
- php四种基础算法:冒泡,选择,插入和快速排序法
- php四种基础算法:冒泡,选择,插入和快速排序法
- iOS开发那些事-关于性能优化–选择nib还是故事板的讨论
- 算法-基本排序:冒泡、选择、插入
- iOS 自定义多张图片选择+demo
- 三种基本的排序算法:选择,插入,冒泡