打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
数据结构——数据结构的查找与排序 (折半查找 、哈希查找 、直接插入排序 、冒泡排序 、快速排序)

各类介绍:






各类实战

代码如下:
(包括五种,自己可以逐个测试)

#include "pch.h"
#include <iostream>
using namespace std;

//折半查找

int BinarySearchFunc(int key, int a[], int n)
{
int low, mid, high;//查找标记
int count = 0;//统计查找次数
low = 0;
high = n - 1;
int countT = 0;

while (low <= high)
{
count++;
mid = (high + low) / 2;

if (key == a[mid])
{
cout << "查找成功,位置查找次数为:" << count << "对应的位置是:a[" << mid << "]" << endl;
countT++;
break;
}
else if (key < a[mid])//查找数据是在low-mid之间
{
high = mid - 1;
}
else if (key > a[mid])//查找数据是在mid-high之间
{
low = mid + 1;
}

}
if (countT == 0)
{
cout << "查找key失败!" << endl;
}
return 0;
}

int main()
{
cout << "折半查找:" << endl;
int key;
int array[10] = { 1,2,13,34,45,56,78,79,88,92 };
cout << "请输入要查找的数据:";
cin >> key;
BinarySearchFunc(key, array, 10);

return 0;
}


哈希表

//#define N  11
//#define L  13
//
//int Data[N] = { 10,23,33,26,56,11,88,56,66,22,74 };//原始表
//int Hash[L] = { 0 };//哈希表
//
//创建使用哈希表
//void CreateHash()
//{
//for (int i = 0; i < N; i++)
//{
//int j=Data[i] % L;//计算哈希地址
//while (Hash[j])
//{
//j = (++j) % L;
//}
//Hash[j] = Data[i];
//}
//}
//
//查找哈希表里的数据
//int HashSearch(int key)
//{
//int i = key % L;//计算哈希地址
//while (Hash[i]&&Hash[i]!=key)//不是我要查找的值
//{
//i = (++i) % L;//更换哈希地址
//}
//if (Hash[i]==0)//找到开放空间的时候,查找失败
//{
//return -1;//查找失败
//}
//else
//{
//return i;
//}
//}
//
//int main()
//{
//int key;
//CreateHash();
//cout << "哈希表中的值为:" << endl;
//for (int i = 0; i < L; i++)
//{
//cout << Hash[i] << " ";
//}
//cout << endl;
//
//cout << "请输入所要查找的值:";
//cin >> key;
//int IP=HashSearch(key);
//if (IP==-1)
//{
//cout << "查找失败!" << endl;
//}
//else
//{
//cout << "查找成功!所对应的下标为:" << IP << endl;
//}
//
//return 0;
//}

//直接插入排序

//int DirInsertSortFunc(int arraa[], int length)
//{
//int j;
//for (int i = 2; i <=length; i++)
//{
//arraa[0] = arraa[i];//给监视哨赋值,a【0】用来做比较
//j = i - 1;//确定要比较的元素
//while (arraa[0]<arraa[j])
//{
//arraa[j + 1] = arraa[j];//数据右移
//j--;//下标前移
//}
//arraa[j + 1] = arraa[0];//在确定位置插入arraa[i]
//}
//return 0;
//}
//
//
//int main()
//{
//
//cout << "插入排序:"<<endl;
//int arry[6] = { 0,12,33,66,55,22 };
//DirInsertSortFunc(arry, 5);
//cout << "插入排序后的结果为:";
//for (int i = 1; i <= 5; i++)
//{
//cout << arry[i] << " ";
//}
//cout << endl;
//return 0;
//}

//冒泡排序

//void Func(int a[])
//{
//int temp;
//for (int i = 1; i < 5; i++)
//{
//for (int j = 0; j < 5-i; j++)
//{
//if (a[j]>a[j+1])
//{
//temp = a[j];
//a[j] = a[j + 1];
//a[j + 1] = temp;
//}
//}
//}
//}
//
//int main()
//{
//cout << "冒泡排序:" << endl;
//int a[5] = { 1,55,64,99,23 };
//
//Func(a);
//cout << "冒泡排序的结果为:";
//for (int i = 0; i < 5; i++)
//{
//cout << a[i] << " ";
//}
//cout << endl;
//
//return 0;
//}

//快速排序

//int QsortFunc(int a[], int start, int end)
//{
//int i, j;
//i = start;//每组首个元素给i
//j = end;//每组末尾元素给j
//a[0] = a[start];//设置基准值
//
//while (i<j)
//{
////基准值左边
//while (i<j&&a[0]<a[j])
//{
//j--;//位置左移
//}
//if (i<j)
//{
//a[i] = a[j];
//i++;//位置右移
//}
////基准值右边
//while (i < j&&a[i] <= a[0])
//{
//i++;//位置左移
//}
//if (i < j)
//{
//a[j] = a[i];
//j--;//位置右移
//}
//}
//a[i] = a[0];//将基准值放入指定位置
//if (start<i)
//{
//QsortFunc(a, start, j - 1);
//}
//if (i < end)
//{
//QsortFunc(a, j + 1, end);
//}
//return 0;
//}
//
//int main()
//{
//cout << "快速排序:" << endl;;
//int a[11] = { 0,66,6,666,332,12,87,45,12,45,6 };
//
//QsortFunc(a, 1, 10);
//cout << "快速排序的结果为:";
//for (int i = 1; i <=10; i++)
//{
//cout << a[i] << " ";
//}
//return 0;
//}

五种结果分别为:




本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
C 实现布隆过滤器 - 从上亿条数据中查找某个记录是否存在
简单的输入输出
93 f0312
数据结构二:栈(C++代码)
Qt学习:再次理解隐式共享
boost::unordered_map 和 std::map 的效率,内存比较
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服