static void Main(string[] args)
{
int[] numbers = new int[20];
StreamReader numFile = File.OpenText(@"H:\工作學(xué)習(xí)unity\CSharpTest\ConsoleApplication1\demo\Test.txt");
for (int i = 0; i < numbers.Length; i++)
numbers[i]=Convert.ToInt32( numFile.ReadLine());
int searchNumber;
Console.WriteLine("Enter a Number to search for:");
searchNumber = Convert.ToInt32(Console.ReadLine());
Console.WriteLine( SeqSearch(numbers, searchNumber));
Console.WriteLine(SeqSearchIndex(numbers, searchNumber));
Console.WriteLine("最大值"+FindMax(numbers));
Console.WriteLine("最小值" + FindMin(numbers));
Console.WriteLine( binSearch(58));
Console.WriteLine(RbinSearch(64, 0,9));
Console.Read();
}
/// <summary>
/// 順序查找
/// </summary>
/// <param name="arr"></param>
/// <param name="sValue"></param>
/// <returns></returns>
static bool SeqSearch(int[] arr,int sValue) {
for (int index = 0; index < arr.Length; index++)
{
if (arr[index]==sValue)
{
return true;
}
}
return false;
}
/// <summary>
/// 順序查找返回位置
/// </summary>
/// <param name="arr"></param>
/// <param name="sValue"></param>
/// <returns></returns>
static int SeqSearchIndex(int[] arr, int sValue)
{
for (int index = 0; index < arr.Length; index++)
if (arr[index] == sValue)
return index;
return -1;
}
/// <summary>
/// 查找最小值
/// </summary>
/// <param name="arr"></param>
/// <returns></returns>
static int FindMin(int[] arr) {
int min= arr[0];
for (int index = 1; index < arr.Length; index++)
if (min>arr[index])
min = arr[index];
return min;
}
/// <summary>
/// 查找最大值
/// </summary>
/// <param name="arr"></param>
/// <returns></returns>
static int FindMax(int[] arr)
{
int max = arr[0];
for (int index = 1; index < arr.Length; index++)
if (max < arr[index])
max = arr[index];
return max;
}
public static Int32[] IntArr = new Int32[10] { 2, 23, 34, 56, 58, 64, 89, 90, 97, 99 };
/// <summary>
/// 自組織數(shù)據(jù)加快順序查找速度
/// </summary>
/// <param name="aValue"></param>
/// <returns></returns>
static int SeqSearchCustom(int aValue) {
for (int i = 0; i < IntArr.Length; i++)
{
if (IntArr[i]==aValue&&i>(IntArr.Length*0.2))
{
swap(i,i-1);
return i - 1;
}
else
{
if (IntArr[i] == aValue)
{
return i;
}
}
}
return -1;
}
static void swap(int index1,int index2) {
int temp = IntArr[index1];
IntArr[index1] = IntArr[index2];
IntArr[index2] = temp;
}
//二分查找(有順序的)
static int binSearch(int value) {
int upperBound, lowerBound, mid;
upperBound = IntArr.Length - 1;
lowerBound = 0;
while (lowerBound<= upperBound)
{
mid = (lowerBound+upperBound) / 2;
if (IntArr[mid]==value)
return mid;
else
{
if (value< IntArr[mid])
upperBound = mid - 1;
else
lowerBound = mid + 1;
}
}
return -1;
}
/// <summary>
/// 遞歸的二分查找
/// </summary>
/// <param name="value"></param>
/// <param name="lower"></param>
/// <param name="upper"></param>
/// <returns></returns>
public static int RbinSearch(int value,int lower,int upper) {
if (lower>upper)
{
return -1;
}
else
{
int mid = (upper+lower) / 2;
if (value<IntArr[mid])
{
return RbinSearch(value, lower, mid - 1);
}
else if (value ==IntArr[mid])
{
return mid;
}
else return RbinSearch(value, mid + 1, upper);
}
}
}
}
003_基礎(chǔ)查找算法
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 本系列博客習(xí)題來自《算法(第四版)》,算是本人的讀書筆記,如果有人在讀這本書的,歡迎大家多多交流。為了方便討論,本...
- 查找 查找算法性能的最主要評(píng)價(jià)標(biāo)準(zhǔn)是平均查找長(zhǎng)度(Average Search Length,ASL),即查找過程...
- 1. 查找基本概念 查找:只有兩種情況,查找成功,查找失敗 查找表:查找的數(shù)據(jù)集合稱為查找表 靜態(tài)查找表 / 動(dòng)態(tài)...
- Java基礎(chǔ)算法:堆排,快排,二分查找 1. 堆排 滿二叉樹:所有葉結(jié)點(diǎn)都有同樣的深度,每個(gè)內(nèi)部結(jié)點(diǎn)都有兩個(gè)兒子 ...
- 還是要好好學(xué)習(xí)英文啊,筆者只能看中文版的,下載地址如下:http://download.csdn.net/deta...