摘要:冒泡排序臨時交換變量記錄數(shù)組長度計數(shù),記錄一共進行了多少次交換數(shù)組長度為輸出數(shù)組成都外層循環(huán)排序出數(shù)組的的值交換標志內層循環(huán),從底往上冒泡,將小泡浮到位置比較兩個元素大小,并交換位置確定交換標志記錄比較元素的次數(shù)共交換了次輸出數(shù)
1.冒泡排序
function bubbleSort(arr) { var temp; //臨時交換變量 let n = arr.length; //記錄數(shù)組長度 let count=0; //計數(shù),記錄一共進行了多少次交換 //document.write("數(shù)組長度為:"+n+"2.簡單選擇排序
") //輸出數(shù)組成都 for (let i=0; ii; j-- ) { //內層循環(huán),從底往上冒泡,將小泡浮到arr[i]位置 //alert(0); if (arr[j-1]>arr[j]) { //比較兩個元素大小,并交換位置 temp=arr[j-1]; arr[j-1]=arr[j]; arr[j]=temp; flag=flag+1; //確定交換標志 count=count+1; //記錄比較元素的次數(shù) //console.log(flag); //console.log("共交換了:"+count+"次"); } //console.log(arr) //輸出數(shù)組 } if (flag==0) { //跳出循環(huán) break; } } document.write("冒泡排序執(zhí)行次數(shù)為:"+count+"
") return arr; //返回數(shù)組 }
function selectSort(arr) { let temp; let n = arr.length; let count =0; for (let i=0; i3.直接插入排序 function insertSort(arr) { let i,j; let n= arr.length; let count = 0; for (i=1; i4.希爾排序arr[-1];j--) { //當i位置前面的值比哨兵小,后移i位置的值,并插入哨兵到原先i位置 arr[j+1] = arr[j]; arr[j] = arr[-1]; count++; } } } document.write("直接插入排序執(zhí)行次數(shù)為:"+count); return arr; } function shellSort(arr) { let d = arr.length; let i; let temp; //暫存 do { //設置增量 d = Math.floor(d / 3) + 1; for (i = d ; i < arr.length; i++) { if (arr[i] < arr[i - d]) { temp = arr[i]; for (var j = i - d; j >= 0 && temp < arr[j]; j -=d) { arr[j + d] = arr[j]; arr[j] = temp; } } } } while (d > 1) return arr; }5.去重算法function unique(arr) { let brr=[]; for (let i=0; i6.快速排序 function partition(arr,low,high) { let temp=arr[low], //基準值 changetemp; //用于交換的臨時變量 while (low7.使用JS方法并將形參減少為僅輸入一個數(shù)組的快排=temp) { high--; } //當從high往前掃時,大于基準值時,high-- //swap(arr, low, high); //當從high往前掃時,小于基準值時,交換基準值和arr[high]位置 changetemp=arr[low]; arr[low]=arr[high]; arr[high]=changetemp; while(low "); quick(arr, pivot+1, high); //對樞軸值后面的序列排序 } //return pivot; //返回樞軸值 return arr; //返回排序后的數(shù)組 } function quickSort (arr) { if (arr.length<=1) { return arr; } let left = [], right = [], pivotIndex = Math.floor(arr.length/2); let pivot = arr.splice(pivotIndex,1)[0]; for (let i=0; i8.JS實現(xiàn)歸并排序 function mergeSort (arr) { //合并兩個有序數(shù)組為一個數(shù)組 function merge(left,right) { let arr=[]; while (left.length && right.length) { if (left[0] < right[0]) { arr.push(left.shift()); } else { arr.push(right.shift()); } } return arr.concat(left,right); } let len=arr.length; if (len <= 1) { return arr; } else { let index = Math.floor(len/2), left = arr.slice(0,index), right = arr.slice(index); return merge(mergeSort(left),mergeSort(right));//用遞歸對數(shù)組進行拆分,再返回合并后的數(shù)組 } }9.堆排序function heapSort(array) { var result = array.slice(0); function swap(array, i, j) { var temp = array[i]; array[i] = array[j]; array[j] = temp; } function maxHeapify(array, index, heapSize) { var iMax, iLeft, iRight; while (true) { iMax = index; iLeft = 2 * index + 1; iRight = 2 * (index + 1); if (iLeft < heapSize && array[index] < array[iLeft]) { iMax = iLeft; } if (iRight < heapSize && array[iMax] < array[iRight]) { iMax = iRight; } if (iMax != index) { swap(array, iMax, index); index = iMax; } else { break; } } } function buildMaxHeap(array) { var i, iParent = Math.floor(array.length / 2) - 1; for (i = iParent; i >= 0; i--) { maxHeapify(array, i, array.length); } } function sort(array) { buildMaxHeap(array); for (var i = array.length - 1; i > 0; i--) { swap(array, 0, i); maxHeapify(array, 0, i); } return array; } return sort(result); }10.JS實現(xiàn)順序查找function listSearch(arr,data) { var result; for (var i = 0;i11.JS實現(xiàn)二分查找 function binarySearch(arr,key) { var low = 0, high = arr.length-1; while (low <= high) { var mid = parseInt((low+high)/2); if (key < arr[mid]) { high = mid-1; } else if (key > arr[mid]) { low = mid+1; } else { return mid; } } return -1; }12.統(tǒng)計字符串中出現(xiàn)次數(shù)最多的字符function count(str) { var obj = {}, mostStr = "", key; for(var i = 0; i13.斐波拉契數(shù)列遞歸寫法obj[mostStr]) { mostStr = key } } return [mostStr,obj[mostStr]] } function fibonicco(n) { if (n ===1 || n === 2) { return 1; } else { return fibonicco(n-1)+fibonicco(n-2); } }14.斐波拉契數(shù)列迭代寫法function fibonicco(n) { var a,b,res; a = b = res =1; for (var i =3; i<=n; i++) { res = a+b; a = b; b = res; } return res; }
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/83580.html
摘要:棧被稱為一種后入先出的數(shù)據(jù)結構。散列使用的數(shù)據(jù)結構叫做散列表。這些操作需要求助于其他數(shù)據(jù)結構,比如下面介紹的二叉查找樹。 前言 在過去的幾年中,得益于Node.js的興起,JavaScript越來越廣泛地用于服務器端編程。鑒于JavaScript語言已經(jīng)走出了瀏覽器,程序員發(fā)現(xiàn)他們需要更多傳統(tǒng)語言(比如C++和Java)提供的工具。這些工具包括傳統(tǒng)的數(shù)據(jù)結構(如鏈表,棧,隊列,圖等),...
摘要:與異步編程按照維基百科上的解釋獨立于主控制流之外發(fā)生的事件就叫做異步。因為的存在,至少在被標準化的那一刻起,就支持異步編程了。然而異步編程真正發(fā)展壯大,的流行功不可沒。在握手過程中,端點交換認證和密鑰以建立或恢復安全會話。 1、前端 排序算法總結 排序算法可能是你學編程第一個學習的算法,還記得冒泡嗎? 當然,排序和查找兩類算法是面試的熱門選項。如果你是一個會寫快排的程序猿,面試官在比較...
摘要:與異步編程按照維基百科上的解釋獨立于主控制流之外發(fā)生的事件就叫做異步。因為的存在,至少在被標準化的那一刻起,就支持異步編程了。然而異步編程真正發(fā)展壯大,的流行功不可沒。在握手過程中,端點交換認證和密鑰以建立或恢復安全會話。 1、前端 排序算法總結 排序算法可能是你學編程第一個學習的算法,還記得冒泡嗎? 當然,排序和查找兩類算法是面試的熱門選項。如果你是一個會寫快排的程序猿,面試官在比較...
摘要:與異步編程按照維基百科上的解釋獨立于主控制流之外發(fā)生的事件就叫做異步。因為的存在,至少在被標準化的那一刻起,就支持異步編程了。然而異步編程真正發(fā)展壯大,的流行功不可沒。在握手過程中,端點交換認證和密鑰以建立或恢復安全會話。 1、前端 排序算法總結 排序算法可能是你學編程第一個學習的算法,還記得冒泡嗎? 當然,排序和查找兩類算法是面試的熱門選項。如果你是一個會寫快排的程序猿,面試官在比較...
閱讀 2908·2021-11-23 09:51
閱讀 1554·2021-11-15 11:36
閱讀 3013·2021-10-13 09:40
閱讀 1898·2021-09-28 09:35
閱讀 13077·2021-09-22 15:00
閱讀 1374·2019-08-29 13:56
閱讀 2929·2019-08-29 13:04
閱讀 2702·2019-08-28 18:06