void selectSort(int num[], int length);
void swap(int num[],int i ,int j);
void butttleSort(int num[], int length);
int main(int argc, const char * argv[]) {
//已知一个无序数组,对其排序
int num[5] = {99, 33, 55, 11, 77};
//计算数组的长度
int length = sizeof(num) / sizeof(num[0]);
//selectSort(num, lenght);
butttleSort(num, length);
for (int i = 0; i < length; i++) {
printf("num[%i]=%i\n", i, num[i]);
}
}
//选择排序
//拿到其中一个元素的值依次和其它元素进行比较,完全比较完一次之后, 最值出现在第0位
/*
void selectSort(int num[], int length)
{
for (int i = 0; i < length - 1; i++) {
for (int j = i + 1; j< length; j++) {
if (num[i] > num[j])
{
swap(num, i, j);
}
}
}
}
*/
//冒泡排序
//是用相邻的两个元素进行比较, 每完全比较完一次, 最值出现在末尾
void butttleSort(int num[], int length)
{
for (int i = 0; i < length - 1; i++) {
for (int j= 0; j< length - 1 - i; j++) {
if (num[j] > num[j + 1])
{
swap(num, j, j + 1);
}
}
}
}
//更换俩个值的位置
void swap(int num[],int i ,int j)
{
int temp = num[i];
num[i] = num[j];
num[j] = temp;
}
#include <stdio.h>
int findKey(int num[], int key, int length);
int main(int argc, const char * argv[]) {
//折半查找针对有序的
//要求找出某一个key,并返回其对应的索引,否则返回-1
int num[5] = {1, 3, 5, 7, 9};
int length =sizeof(num) / sizeof(num[0]);
int key = 3;
printf("index=%i\n", findKey(num, key, length));
return 0;
}
int findKey(int num[], int key, int length)
{
int min = 0;
int max = length - 1;
int mid;
while (max >= min) {
mid = (max + min) / 2;
if (key > num[mid]) {
min = mid -1;
}else if (key < num[min])
{
max = mid + 1;
}else
return mid;
}
return -1;
}