//联系人:石虎 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;
}
}
}
}