黑马程序员_iOS_C语言实现排序、查找和插入
2015-11-17 04:49
453 查看
——- android培训、java培训、期待与您交流! ———-
#include <stdio.h> /** * 升序交换 * * @param a 数组 * @param front 前一个元素下标 * @param back 后一个元素下标 */ void swap_up(int a[],int front,int back){ if (a[front]>a[back]) { a[front] = a[front]+a[back]; a[back] = a[front] - a[back]; a[front] = a[front] - a[back]; } } /** * 降序交换 * * @param a 数组 * @param front 前一个元素下标 * @param back 后一个元素下标 */ void swap_down(int a[],int front,int back){ if (a[front]<a[back]) { a[front] = a[front]+a[back]; a[back] = a[front] - a[back]; a[front] = a[front] - a[back]; } } /** * 冒泡排序 * 分析:小数上浮大数下沉 * @param a 数组 * @param len 数组长度 */ void bubbleSort(int a[],int len){ for (int i = 0; i<len-1; i++) { for (int j =0; j<len-1-i; j++) { swap_up(a, j, j+1); } } printf("\n"); } /** * 选择排序 * 分析:选取最小值置于最前 * @param a 数组 * @param len 数组长度 */ void selectSort_min(int a[],int len){ for (int i = 0; i<len - 1; i++) { for (int j = i+1; j<len; j++) { swap_up(a, i, j); } } } /** * 选择排序 * 分析:选取最大值置于最后 * @param a 数组 * @param len 数组长度 */ void selectSort_max(int a[],int len){ for (int i = len-1; i>=0; i--) { for (int j = 0; j<i; j++) { swap_up(a, j, i); } } } /** * 折半查找(有序数组) * 分析:key值与中间数值比较 * @param a 数组 * @param len 数组长度 * @param key 要查的值 */ int binarySearch(int a[],int len,int key){ int low = 0,high = len-1; int mid; while (low<=high) { mid = (low+high)/2; if (key>a[mid]) { low = mid + 1; }else if (key<a[mid]){ high = mid - 1; }else{ return mid; } } //没有查找到 return -1; } /** * 折半查找_插入值 * * @param a 数组 * @param len 数组长 * @param key 插入值 * * @return 插入的位置 */ int binarySearch_insert(int a[],int len,int key){ int low = 0,high = len-1; int mid; while (low<=high) { mid = (low+high)/2; if (key>a[mid]) { low = mid + 1; }else if (key<a[mid]){ high = mid - 1; }else{ return mid+1; } } //没有查找到 return low; } int main(int argc, const char * argv[]) { //升序排列数组 int a[] = {3,1,5,7,2,12,45,2,3,6,9}; int len = sizeof(a)/sizeof(int); //排序前 printf("排序前:"); for (int i = 0; i<len; i++) { printf("%d ",a[i]); } printf("\n"); //排序 // bubbleSort(a, len); // selectSort_min(a, len); selectSort_max(a, len); //排序后 printf("排序后:"); for (int i = 0; i<len; i++) { printf("%d ",a[i]); } printf("\n"); //折半查找 int i = binarySearch(a, len, 4); printf("%d\n",i); i = binarySearch_insert(a, len, 11); printf("%d\n",i); return 0; }
相关文章推荐
- sample_face_group.cpp
- C语言编程规范6: 程序效率
- 反转字符串
- C语言编程规范5: 预编译宏
- 字符串替换
- C语言编程规范4: 命名规则
- 并行编译加快VS C++项目的编译速度
- C语言编程规范3: 可读性
- C语言编程规范2: 排版
- C语言编程规范1: 注释
- C++ 容器vector 语法练习
- C++面试题之容器
- C++容器练习代码【加网友分享】
- 标准C++中的string类的用法总结
- python3中调用C语言的函数
- C++迭代器之'插入迭代器'
- 一起talk C栗子吧(第六十一回:C语言实例--字符串连接)
- c++模板类学习--例子编译可能有问题【注】
- C++习题与解析-模板
- C++系列目录