各类介绍:
各类实战
代码如下:
(包括五种,自己可以逐个测试)
#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;
//}
五种结果分别为: