各種演算法五
我們來看看基本的超找滴呀;
在我們的演算法中,有一種叫做線性查詢。
分為:順序查詢。
折半查詢。
順序查詢:
這種非常簡單,就是過一下陣列,乙個乙個的比,找到為止。
//基本的順序查詢太簡單,其實就是找到你想要的額匹配項了滴呀;
public
static
void
lookup()
;var result = getindex(list, 3
);
if (result != -1
) console.writeline(
"索引位置為:
" +result);
else
console.writeline(
"沒有找到!");
console.read();
}static
int getindex(list list, int
key)
return -1
; }
分半查詢方式滴呀;這種方式,僅僅限於我們的奇數個值滴呀;可惜了~~~
staticint getindex01(list list, int
key)
if (list[len - 1-i] ==key)
}return -1
; }
當然,我們可以進一步的各種優化滴呀;效果還是不錯滴呀;
這樣就算找到了我們比較通用的方法了;效果還是不錯滴呀;恩恩,樣滴呀;
staticint getindex02(list list, int
key)
else
if (list[high] ==key)
else}}
return -1
; }
總結:
如果使用平法的話;就會出現下面額情況滴呀;
如果是偶數的話,那麼就敲好評分了;
如果是奇數的話,那麼就會出現左右相差一的情況;
如果是low 和 high 兩個指標的話,應該就是
左右兩邊剛好相等;
如果是奇數的話,low 和high 會指到統一index,然後再比較;
效果非常好的呀;
折半查詢
使用折半查詢是必須有前提滴呀;
第二: 這種查詢只限於線性的順序儲存結構。
好了,繼續敲**,ps,今天是星期五,好吧~
//上面的查詢,技術含量太低了一點底呀;
//是灰常滴呀;
public
static
intcontinutelookupinformation()
;int key = 10
;
int low = 0
;
int high = list.count - 1
;
while (low <=high)
else
else}}
return -1;//
沒有找到我們想要的值滴呀;
}
這裡補充乙個,關於陣列,奇數後偶的折半問題;
x奇數: 1 2 3 4 5
y偶數:1 2 3 4
x/2=2;
y/2=2;
因為都是int 型別的;
x,第一次比較的正好是3
第二次, low=0 high=1; (low+hig)/2=0 如果還沒找到到 (low+high)=1
這樣左右兩個數都比較了;
實現的方式也是多種多樣滴呀;
各種排序演算法
交換函式 void swap int a,int b 氣泡排序 氣泡排序 bubble sort,台灣譯為 泡沫排序或氣泡排序 是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排...
各種排序演算法
include include include using namespace std void swap int a,int b void output int a,int n 直接插入排序 時間複雜度o n 2 void insertsort int a,int n 折半插入排序 o n 2 只...
各種排序演算法
排序演算法是一種基本並且常用的演算法。由於實際工作中處理的數量巨大,所以排序演算法 對演算法本身的速度要求很高。而一般我們所謂的演算法的效能主要是指演算法的複雜度,一般用o方法來表示。在後面我將 給出詳細的說明。對於排序的演算法我想先做一點簡單的介紹,也是給這篇文章理乙個提綱。我將按照演算法的複雜度...