博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单算法的应用
阅读量:4559 次
发布时间:2019-06-08

本文共 2201 字,大约阅读时间需要 7 分钟。

#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;
}
}
}
}

转载于:https://www.cnblogs.com/tryFighting/p/8920732.html

你可能感兴趣的文章
对BFC的总结
查看>>
第十四周Java学习总结
查看>>
税率等级
查看>>
__alloc_pages
查看>>
web service 使用多态(转载)
查看>>
23醒
查看>>
NYOJ-586 疯牛(二分枚举+贪心)
查看>>
如何管理密码-网络站长-网络管理员必看
查看>>
可编程渲染管线与着色器语言
查看>>
linux命令总结之seq命令
查看>>
查看cpu几核方法
查看>>
现在下载解压都找不到spring.jar 原因
查看>>
[BJWC2010]外星联络
查看>>
DICOM MPPS的原理及应用
查看>>
IOS画线条
查看>>
图片的工具类
查看>>
树莓派设定显示分辨率
查看>>
浅析nodejs的buffer类
查看>>
C++ 基类指针,子类指针,多态
查看>>
从TWAIN设备中扫描图像
查看>>