黑马程序员_iOS_C语言实现排序、查找和插入
来源:互联网 发布:java创建多线程数组 编辑:程序博客网 时间:2024/06/05 00:23
——- 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;}
0 0
- 黑马程序员_iOS_C语言实现排序、查找和插入
- 黑马程序员——c语言基础:冒泡排序、选择排序和折半查找
- 黑马程序员_数组、冒泡、选择、插入排序法,查找。
- 黑马程序员_插入排序
- 黑马程序员----排序与查找
- 黑马程序员__排序、查找和进制转换
- 黑马程序员--05JAVA数组及其排序和查找
- 黑马程序员_数组的排序,求最值和查找
- 数据结构 查找及排序算法、直接插入排序及顺序查找(c语言实现)
- 黑马程序员_常见排序算法:冒泡排序、选择排序和插入排序
- 黑马程序员——java基础排序算法:选择排序、冒泡排序和插入排序
- 黑马程序员_C语言基础_数组之冒泡排序、快速选择排序、折半查找
- C语言实现直接插入排序和希尔排序
- 用Java语言实现冒泡排序和插入排序
- 黑马程序员--c语言-排序
- C语言实现直接插入排序,冒泡排序以及二分查找(巩固理解记忆)
- 黑马程序员-day04数组排序,查找
- 黑马程序员----实用的数组排序查找
- Docker实战(五):Docker安装Tomcat
- make our memcpy and memmove
- 函数指针的基本用法
- 欢迎使用CSDN-markdown编辑器
- hadoop思维:HDFS和MapReduce
- 黑马程序员_iOS_C语言实现排序、查找和插入
- [博客]Limboy
- 对于简单模拟路由寻路算法代码的学习。
- SMART原则助你设定有效目标
- RSync实现文件备份同步详解
- 在 Linux 下用户空间与内核空间数据交换的方式,第 2 部分: procfs、seq_file、debugfs和relayfs
- 连接器(Netlink Connector)及其应用
- Linux 系统内核空间与用户空间通信的实现与分析
- 5.6.3 投影和均匀裁剪空间