数组元素排序
来源:互联网 发布:人到五十知天命 编辑:程序博客网 时间:2024/05/21 09:42
1.无序数组——顺序查找法,很无语的查找法
2.有序数组——二分查找法
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>/* * @brief 对数组进行排序 * @param() state:可表示从小到大或从大到小排序 * pArray:指向数组的指针 * length:数组长度 * @return void */void sortData(int *pArray, int length, int state){ if (state == 0) { } else if (state == 1)//从小到大排序 { for (int i = 0; i < length - 1; i++) { for (int j = 0; j < length - i - 1; j++) { if (pArray[j] > pArray[j + 1]) // j >j+1 { pArray[j] = pArray[j] + pArray[j + 1]; pArray[j+1] = pArray[j] - pArray[j + 1]; pArray[j] = pArray[j] - pArray[j + 1]; } } } } else if (state == 2) { for (int i = 0; i < length - 1; i++) { for (int j = 0; j < length - i - 1; j++) { if (pArray[j] < pArray[j + 1]) // 异或实现数据交换 { pArray[j] = pArray[j] ^ pArray[j + 1]; pArray[j + 1] = pArray[j] ^ pArray[j + 1]; pArray[j] = pArray[j] ^ pArray[j + 1]; } } } }}/* * @brief 从给定的数组中查找数据 * @param() state:可表示从小到大或从大到小排序 * pArray:指向数组的指针 * length:数组长度 * data:要查找的数据 * @return int* * 主要是方便插入等操作 */int* findData(int *pArray, int length, int state, int data){ if (state == 0) { for (int i = 0; i < length; i++) { printf("第%d次查找\n", i); if (pArray[i] == data) { printf("经过查找%d次,数据查找成功\n", i+1); return &pArray[i]; } } printf("历经千辛万苦,数据查找还是失败\n"); return NULL; } //二分查找法 int startIndex, endIndex, middleIndex; int count = 0; startIndex = 0; endIndex = length - 1; if (state == 1)//从小到大的顺序 { while (startIndex <= endIndex) { printf("第%d次查找\n", ++count); middleIndex = (startIndex + endIndex) / 2; printf("中间数据是%d\n", pArray[middleIndex]); if (pArray[middleIndex] == data) { printf("经过查找%d次,数据查找成功\n", count); return &pArray[middleIndex]; } else if (pArray[middleIndex] < data) { startIndex = middleIndex + 1; } else { endIndex = middleIndex - 1; } } printf("历经千辛万苦,数据查找还是失败\n"); return NULL; } if (state == 2)//从大到小的顺序 { while (startIndex <= endIndex) { printf("第%d次查找\n", ++count); middleIndex = (startIndex + endIndex) / 2; printf("中间数据是%d\n", pArray[middleIndex]); if (pArray[middleIndex] == data) { printf("经过查找%d次,数据查找成功\n", count); return &pArray[middleIndex]; } else if (pArray[middleIndex] > data) { startIndex = middleIndex + 1; } else { endIndex = middleIndex - 1; } } printf("历经千辛万苦,数据查找还是失败\n"); return NULL; }}int main(){ int num; int a[20] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; printf("请输入要查找的数据:"); scanf("%d", &num); int *p = a; findData(p,20,0,num); printf("对数组数据按照从小到大顺序排序\n"); sortData(p, 20, 1); findData(p, 20, 1, num); printf("对数组数据按照从大到小顺序排序\n"); sortData(p, 20, 2); findData(p, 20, 2, num); system("pause"); return 0;}
0 0
- 数组 局部元素排序
- 数组元素随机排序
- Java数组元素排序
- 数组元素排序
- 数组元素排序
- 数组元素排序问题!
- 数组元素排序
- 数组冒泡排序 二维数组元素排序
- 对一个数组元素排序,对应的数组元素排序
- javascript 数组元素排序.mark
- js 数组元素随机排序
- 数组中的元素排序问题
- iOS数组元素随机排序
- 数组元素删除与排序
- C++数组元素比较排序
- JS 对数组元素排序
- 数组中制定元素排序
- oj-14-数组元素排序
- 测试用例基本要点
- 【IE6的BUG一】链接伪类(:hover)CSS背景图片有闪动BUG
- hdu4865 Peter's Hobby
- SDN&NFV推动物联网发展
- Java 重载重写及多态性
- 数组元素排序
- 用nginx搭建基于rtmp或者http的flv、mp4流媒体服务器
- 感悟(5)——再游北京有感
- STL常用容器浅谈
- 一、状态压缩dp(4)CZA的蛋糕
- poj 2299 树状数组+离散化 or 归并排序 求逆序对
- JSPatch实现原理详解:让JS调用/替换任意OC方法
- AlertDialog.Builder弹出自定义Layout窗口
- spark1.3.1安装