简单算法的应用

#include "stdio.h"
//折半查找
int searchItem(int array[], int len, int key);

int main(int argc, char const *argv[])
{
int array[] = {1,23,34,12,2,3,45,6,7,8};
long len = sizeof(array)/sizeof(int);
int location = searchItem(array,10,8);

printf("location = %d\n",location );
return 0;
}


/**
*使用折半查找来查找一个数
*
*参数1 array 数组
*参数2 len 数组长度
*参数3 key 查找的数
*返回查找的数的位置 , 如果查找不到返回 -1
*/

int searchItem(int array[], int len, int key){

//1.先定义变量
int low = 0, high = len - 1, mid;
//2.循环查找
while(low <= high){

//2.1计算 mid位置
mid = (low + high)/2;

//判断key array[mid] 的大小,在那一半区查找
if (key > array[mid])
{//右半区域
low = mid + 1;
}else if (key < array[mid])
{
high = mid - 1;
}else{

return mid;
}
}


return -1;
}

#include "stdio.h"

void selection_sort(int array[], int len);//选择排序

int main(int argc, char const *argv[])
{
int a[10] = {1,200,290,12,23,12,45,67,78,90};

//1.打印输出排序之前的元素顺序
printf("排序之前:\n");
for (int i = 0; i < 10; ++i)
{
printf("%d\t",a[i]);
}
printf("\n");

//2.排序
selection_sort(a,10);//将数组名字和数组的长度传递过去

//3.打印输出排序之后的元素顺序
printf("排序之后:\n");
for (int i = 0; i < 10; ++i)
{
printf("%d\t",a[i]);
}
printf("\n");

return 0;
}
/*
描述:
选择排序
参数:数组名和数组长度
返回值:无

*/

void selection_sort(int array[], int len)
{
int temp;
//双重循环
for (int i = 0; i < len - 1; ++i)
{
for (int j = i + 1; j < len; ++j)
{
//如果有比其小得数就进行交换
if (array[i] > array[j])
{
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}

#include "stdio.h"

void bubble_sort(int array[], int len);

int main(int argc, char const *argv[])
{
int a[10] = {1,200,290,12,23,12,45,67,78,90};

//1.打印输出排序之前的元素顺序
printf("排序之前:\n");
for (int i = 0; i < 10; ++i)
{
printf("%d\t",a[i]);
}
printf("\n");

//2.排序
bubble_sort(a,10);//将数组名字和数组的长度传递过去

//3.打印输出排序之后的元素顺序
printf("排序之后:\n");
for (int i = 0; i < 10; ++i)
{
printf("%d\t",a[i]);
}
printf("\n");

return 0;
}

/*
冒泡排序函数

参数:数组和数组的长度
返回值:无
*/
void bubble_sort(int array[], int len)
{

//因为i的值每变化一次,就跑了一趟,按照冒泡的思想,已经有了一个数下沉
//没有必要和已经下沉了得数比较
int temp;
//1.控制着第几趟
for (int i = 0; i < len - 1; ++i)
{
//2.从第一个开始往后比较,如果大于就进行交换,否则不换
for (int j = 0; j < len - 1 - i ; ++j)
{

if (array[j] > array[j + 1])
{
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}

猜你喜欢

转载自www.cnblogs.com/tryFighting/p/8920732.html
今日推荐