摘要:冒泡排序臨時(shí)交換變量記錄數(shù)組長(zhǎng)度計(jì)數(shù),記錄一共進(jìn)行了多少次交換數(shù)組長(zhǎng)度為輸出數(shù)組成都外層循環(huán)排序出數(shù)組的的值交換標(biāo)志內(nèi)層循環(huán),從底往上冒泡,將小泡浮到位置比較兩個(gè)元素大小,并交換位置確定交換標(biāo)志記錄比較元素的次數(shù)共交換了次輸出數(shù)
1.冒泡排序
function bubbleSort(arr) { var temp; //臨時(shí)交換變量 let n = arr.length; //記錄數(shù)組長(zhǎng)度 let count=0; //計(jì)數(shù),記錄一共進(jìn)行了多少次交換 //document.write("數(shù)組長(zhǎng)度為:"+n+"2.簡(jiǎn)單選擇排序
") //輸出數(shù)組成都 for (let i=0; ii; j-- ) { //內(nèi)層循環(huán),從底往上冒泡,將小泡浮到arr[i]位置 //alert(0); if (arr[j-1]>arr[j]) { //比較兩個(gè)元素大小,并交換位置 temp=arr[j-1]; arr[j-1]=arr[j]; arr[j]=temp; flag=flag+1; //確定交換標(biāo)志 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; //返回?cái)?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--) { //當(dāng)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 { //設(shè)置增量 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], //基準(zhǔn)值 changetemp; //用于交換的臨時(shí)變量 while (low7.使用JS方法并將形參減少為僅輸入一個(gè)數(shù)組的快排=temp) { high--; } //當(dāng)從high往前掃時(shí),大于基準(zhǔn)值時(shí),high-- //swap(arr, low, high); //當(dāng)從high往前掃時(shí),小于基準(zhǔn)值時(shí),交換基準(zhǔn)值和arr[high]位置 changetemp=arr[low]; arr[low]=arr[high]; arr[high]=changetemp; while(low "); quick(arr, pivot+1, high); //對(duì)樞軸值后面的序列排序 } //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實(shí)現(xiàn)歸并排序 function mergeSort (arr) { //合并兩個(gè)有序數(shù)組為一個(gè)數(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));//用遞歸對(duì)數(shù)組進(jìn)行拆分,再返回合并后的數(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實(shí)現(xiàn)順序查找function listSearch(arr,data) { var result; for (var i = 0;i11.JS實(shí)現(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)計(jì)字符串中出現(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; }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/83580.html
摘要:棧被稱為一種后入先出的數(shù)據(jù)結(jié)構(gòu)。散列使用的數(shù)據(jù)結(jié)構(gòu)叫做散列表。這些操作需要求助于其他數(shù)據(jù)結(jié)構(gòu),比如下面介紹的二叉查找樹。 前言 在過去的幾年中,得益于Node.js的興起,JavaScript越來越廣泛地用于服務(wù)器端編程。鑒于JavaScript語言已經(jīng)走出了瀏覽器,程序員發(fā)現(xiàn)他們需要更多傳統(tǒng)語言(比如C++和Java)提供的工具。這些工具包括傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)(如鏈表,棧,隊(duì)列,圖等),...
摘要:與異步編程按照維基百科上的解釋獨(dú)立于主控制流之外發(fā)生的事件就叫做異步。因?yàn)榈拇嬖?,至少在被?biāo)準(zhǔn)化的那一刻起,就支持異步編程了。然而異步編程真正發(fā)展壯大,的流行功不可沒。在握手過程中,端點(diǎn)交換認(rèn)證和密鑰以建立或恢復(fù)安全會(huì)話。 1、前端 排序算法總結(jié) 排序算法可能是你學(xué)編程第一個(gè)學(xué)習(xí)的算法,還記得冒泡嗎? 當(dāng)然,排序和查找兩類算法是面試的熱門選項(xiàng)。如果你是一個(gè)會(huì)寫快排的程序猿,面試官在比較...
摘要:與異步編程按照維基百科上的解釋獨(dú)立于主控制流之外發(fā)生的事件就叫做異步。因?yàn)榈拇嬖?,至少在被?biāo)準(zhǔn)化的那一刻起,就支持異步編程了。然而異步編程真正發(fā)展壯大,的流行功不可沒。在握手過程中,端點(diǎn)交換認(rèn)證和密鑰以建立或恢復(fù)安全會(huì)話。 1、前端 排序算法總結(jié) 排序算法可能是你學(xué)編程第一個(gè)學(xué)習(xí)的算法,還記得冒泡嗎? 當(dāng)然,排序和查找兩類算法是面試的熱門選項(xiàng)。如果你是一個(gè)會(huì)寫快排的程序猿,面試官在比較...
摘要:與異步編程按照維基百科上的解釋獨(dú)立于主控制流之外發(fā)生的事件就叫做異步。因?yàn)榈拇嬖冢辽僭诒粯?biāo)準(zhǔn)化的那一刻起,就支持異步編程了。然而異步編程真正發(fā)展壯大,的流行功不可沒。在握手過程中,端點(diǎn)交換認(rèn)證和密鑰以建立或恢復(fù)安全會(huì)話。 1、前端 排序算法總結(jié) 排序算法可能是你學(xué)編程第一個(gè)學(xué)習(xí)的算法,還記得冒泡嗎? 當(dāng)然,排序和查找兩類算法是面試的熱門選項(xiàng)。如果你是一個(gè)會(huì)寫快排的程序猿,面試官在比較...
閱讀 2912·2021-11-23 09:51
閱讀 1561·2021-11-15 11:36
閱讀 3018·2021-10-13 09:40
閱讀 1913·2021-09-28 09:35
閱讀 13097·2021-09-22 15:00
閱讀 1380·2019-08-29 13:56
閱讀 2933·2019-08-29 13:04
閱讀 2706·2019-08-28 18:06