1.氣泡排序
氣泡排序演算法的運作如下:(從後往前)
比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
針對所有的元素重複以上的步驟,除了最後乙個。
持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較
//氣泡排序
function bubblesort(arr)
}i--;
}return arr;
} var arr = [3, 2, 4, 9, 1, 5, 7, 6, 8];
var arrsorted = bubblesort(arr);
console.log(arrsorted);
2. 快速排序
快排圖 設要排序的
陣列是a[0]……a[n-1],首先任意選取乙個資料(通常選用陣列的第乙個數)作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。值得注意的是,快速排序不是一種穩定的
排序演算法,也就是說,多個相同的值的相對位置也許會在演算法結束時產生變動。
一趟快速排序的演算法是:
1)設定兩個變數i、j,
排序開始的時候:i=0,j=n-1;
2)以第乙個陣列元素作為關鍵資料,賦值給key,即key=a[0];
3)從j開始向前搜尋,即由後開始向前搜尋(j--),找到第乙個小於key的值a[j],將a[j]和a[i]互換;
4)從i開始向後搜尋,即由前開始向後搜尋(i++),找到第乙個大於key的a[i],將a[i]和a[j]互換;
5)重複第3、4步,直到i=j; (3,4步中,沒找到符合條件的值,即3中a[j]不小於key,4中a[i]不大於key的時候改變j、i的值,使得j=j-1,i=i+1,直至找到為止。找到符合條件的值,進行交換的時候i, j指標位置不變。另外,i==j這一過程一定正好是i+或j-完成的時候,此時令迴圈結束)。
//快速排序
function quicksort(array);
}for( ; nonius < j; nonius++)}}
array[nonius] = flag;
sort(0, nonius);
sort(nonius + 1, numsize);
}} sort(0, array.length);
return array;
} var arr = [3, 2, 4, 9, 1, 5, 7, 6, 8];
quicksort(arr);
3.選擇排序選擇排序(selection sort)是一種簡單直觀的
排序演算法
。它的工作原理是每一次從待排序的
資料元素
中選出最小(或最大)的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。 選擇排序是不穩定的排序方法(比如序列[5, 5, 3]第一次就將第乙個[5]與[3]交換,導致第乙個5挪動到第二個5後面)。
對比陣列中前乙個元素跟後乙個元素的大小,如果後面的元素比前面的元素小則用乙個變數k來記住他的位置,接著第二次比較,前面「後乙個元素」現變成了「前乙個元素」,繼續跟他的「後乙個元素」進行比較如果後面的元素比他要小則用變數k記住它在陣列中的位置(下標),等到迴圈結束的時候,我們應該找到了最小的那個數的下標了,然後進行判斷,如果這個元素的下標不是第乙個元素的下標,就讓第乙個元素跟他交換一下值,這樣就找到整個陣列中最小的數了。然後找到陣列中第二小的數,讓他跟陣列中第二個元素交換一下值,以此類推。
function swap(items, firstindex, secondindex)
function selectionsort(items)
}if(i != min)
}return items;
}console.log(selectionsort([1,3,8,4,5,3,2]));
4.二分查詢法(又稱折半查詢法)
優點:比較次數少,查詢速度快,平均效能好;
缺點:是要求待查表為有序表,且插入刪除困難。
因此,二分查詢方法適用於不經常變動而查詢頻繁的有序陣列。
基本思路:陣列中間位置對應的值與需要查詢的值比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將陣列分成前、後兩個子陣列,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子陣列,否則進一步查詢後一子陣列,然後依遞迴。
function binarysearch1(value, arr, startindex, endindex)
var len = arr.length,
startindex = typeof startindex === 'number' ? startindex : 0,
endindex = typeof endindex === 'number' ? endindex : len -1,
midindex = math.floor((endindex + startindex)/2),
midval = arr[midindex];
if(startindex > endindex)
if(midval === value)else if(value < midval)else
}console.log(binarysearch1(3,[1,2,3,4,5,6,7]));//2
5.堆排序 計算機相關網段計算
規則 ip 00001010.00010101.11100000.00000000 10.21.224.0 子網掩碼 11111111.11111111.11111100.00000000 255.255.252.0 網路標識 11111111.11111111.11100000.00000000 ...
計算機編碼相關
聯通 ascii碼 c1aacda8 11000001 10101010 11001101 10101000 unicode碼 8054901a 10000000 01010100 10010000 00011010 2 u feff轉為utf 8成為3位元組,11111110 11111111 以...
計算機相關知識
一 常用的介面協議 http協議 超文字傳輸協議 https協議 安全超文字傳輸協議 ftp協議 檔案傳輸協議 tcp協議 傳輸控制協議 ip協議 網際網路協議 udp協議 使用者資料協議 二 osi open system interconnection 七層模型 1.物理層 2.資料鏈路層 3....