數(shù)據(jù)結(jié)構(gòu)算法中排序有很多種,常見的、不常見的,至少包含十種以上。根據(jù)它們的特性,可以大致分為兩種類型:比較類排序和非比較類排序

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括嵊州網(wǎng)站建設(shè)、嵊州網(wǎng)站制作、嵊州網(wǎng)頁(yè)制作以及嵊州網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,嵊州網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到嵊州省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
冒泡排序是一次比較兩個(gè)元素,如果順序是錯(cuò)誤的就把它們交換過來(lái)。,直到不需要再交換
快速排序的基本思想是通過一趟排序,將待排記錄分隔成獨(dú)立的兩部分,其中一部分記錄的關(guān)鍵字均比另一部分的關(guān)鍵字小,則可以分別對(duì)這兩部分記錄繼續(xù)進(jìn)行排序,以達(dá)到整個(gè)序列有序
從數(shù)列中挑出一個(gè)元素,稱為 “基準(zhǔn)”(pivot);然后重新排序數(shù)列,所有元素比基準(zhǔn)值小的擺放在基準(zhǔn)前面、比基準(zhǔn)值大的擺在基準(zhǔn)的后面;在這個(gè)區(qū)分搞定之后,該基準(zhǔn)就處于數(shù)列的中間位置;然后把小于基準(zhǔn)值元素的子數(shù)列(left)和大于基準(zhǔn)值元素的子數(shù)列(right)遞歸地調(diào)用 quick 方法排序完成,這就是快排的思路
通過構(gòu)建有序序列,對(duì)于未排序數(shù)據(jù),在已排序序列中從后向前掃描,找到相應(yīng)位置并插入,從而達(dá)到排序的效果
插入排序的思路是基于數(shù)組本身進(jìn)行調(diào)整的,首先循環(huán)遍歷從 i 等于 1 開始,拿到當(dāng)前的 current 的值,去和前面的值比較,如果前面的大于當(dāng)前的值,就把前面的值和當(dāng)前的那個(gè)值進(jìn)行交換,通過這樣不斷循環(huán)達(dá)到了排序的目的
將最小的元素存放在序列的起始位置,再?gòu)氖S辔磁判蛟刂欣^續(xù)尋找最小元素,然后放到已排序的序列后面……以此類推,直到所有元素均排序完畢
堆排序是指利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一種排序算法。堆積是一個(gè)近似完全二叉樹的結(jié)構(gòu),并同時(shí)滿足堆積的性質(zhì),即子結(jié)點(diǎn)的鍵值或索引總是小于(或者大于)它的父節(jié)點(diǎn)。堆的底層實(shí)際上就是一棵完全二叉樹,可以用數(shù)組實(shí)現(xiàn)
歸并排序是建立在歸并操作上的一種有效的排序算法,該算法是采用分治法的一個(gè)非常典型的應(yīng)用。將已有序的子序列合并,得到完全有序的序列;先使每個(gè)子序列有序,再使子序列段間有序。若將兩個(gè)有序表合并成一個(gè)有序表,稱為二路歸并
通過 mid 可以把該數(shù)組分成左右兩個(gè)數(shù)組,分別對(duì)這兩個(gè)進(jìn)行遞歸調(diào)用排序方法,最后將兩個(gè)數(shù)組按照順序歸并起來(lái)
本文實(shí)例講述了JavaScript自定義數(shù)組排序方法。分享給大家供大家參考。具體分析如下:
Array中有自帶的排序功能,這個(gè)使用起來(lái)比較方便,我們有一點(diǎn)必須清楚,就是排序的依據(jù),如果sort不傳入?yún)?shù)的話,那就是按照字符編碼(Unicode編碼)的順序排序。
var
a=["3","2","1"];
console.log(a[0].charCodeAt(0));
//
51
console.log(a[1].charCodeAt(0));
//
50
console.log(a[2].charCodeAt(0));
//
49
console.log(a.sort());
//
["1",
"2",
"3"]
var
a=["3","你","他"];
console.log(a[0].charCodeAt(0));
//
51
console.log(a[1].charCodeAt(0));
//
20320
console.log(a[2].charCodeAt(0));
//
20182
console.log(a.sort());
//
["3",
"他",
"你"]
var
a=["3","11","222"];
console.log(a.sort());//
["11",
"222",
"3"]
//
多個(gè)字符的時(shí)候按照第一個(gè)字符的編碼
不過我覺得sort最好用的地方在于可以自定義排序,這個(gè)在實(shí)際運(yùn)用中也比較常見,比如要對(duì)對(duì)象數(shù)組排序。例如線面的一個(gè)對(duì)象數(shù)組,要根據(jù)其中的某一個(gè)字段進(jìn)行排序,當(dāng)然自己也可以寫個(gè)函數(shù)來(lái)完成,不過我想沒有sort來(lái)得方便。
var
list
=
[
{
max:3,
avg:2,
min:1
},
{
max:10,
avg:15,
min:20
},
{
max:8,
avg:5,
min:2
}
];
//
根據(jù)max字段對(duì)list對(duì)象進(jìn)行排序,從小到大的順序
//
x,y就是要比較的數(shù)組的單個(gè)元素,這里就是list中的一個(gè)元素
//
排序方法主要是要提供一個(gè)比較大小的規(guī)則,換句話說也就是要說明誰(shuí)大誰(shuí)小
//
返回值為true
or
false
function
sortByField(x,
y)
{
return
x.max
-
y.max;
}
console.log(list.sort(sortByField));
運(yùn)行效果如下圖所示:
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
html
body
script type="text/javascript"
function partition3way(arr)
{
var i,j,t,loc=0,len=arr.length;
for(i=1;ilen;i++)
{
if(arr[i]arr[loc])
{
t=arr[i];
for(j=i-1;j=0;j--)
{
arr[j+1]=arr[j];
}
loc++;
arr[0]=t;
}
else if(arr[loc]==arr[i])
{
t=arr[i];
for(j=i-1;j=loc+1;j--)
{
arr[j+1]=arr[j];
}
arr[loc+1]=t;
}
}
}
//var arr=[3,1,3,6,2,3,4,5];
var arr=[60,25,100,66,1,36,45,220,77,50,80,60,61,57,68,60,125,30,90,25,44,60];
partition3way(arr);
for(var index in arr)
{
document.write(arr[index]+" ");
}
/script
/body
/html
script language = "javascript"
function mysortfunc(str1,str2)
{
return eval(str1)-eval(str2);
}
function aa()
{
var x=new Array(document.form1.tb1.value,document.form1.tb2.value,document.form1.tb3.value,document.form1.tb4.value,document.form1.tb5.value,document.form1.tb6.value,document.form1.tb7.value,document.form1.tb8.value,document.form1.tb9.value,document.form1.tb10.value);
x.sort(mysortfunc);
document.write(x);
}
/script
form id="form1" name="form1" method="post" action=""
table width="200" border="0"
tr
tdlabel
input name="tb1" type="text" id="tb1" /
/label/td
/tr
tr
tdinput name="tb2" type="text" id="tb2" //td
/tr
tr
tdinput name="tb3" type="text" id="tb3" //td
/tr
tr
tdinput name="tb4" type="text" id="tb4" //td
/tr
tr
tdinput name="tb5" type="text" id="tb5" //td
/tr
tr
tdinput name="tb6" type="text" id="tb6" //td
/tr
tr
tdinput name="tb7" type="text" id="tb7" //td
/tr
tr
tdinput name="tb8" type="text" id="tb8" //td
/tr
tr
tdinput name="tb9" type="text" id="tb9" //td
/tr
tr
tdinput name="tb10" type="text" id="tb10" //td
/tr
tr
tdlabel
input type="button" name="Submit" value="按鈕" onclick="aa()" /
/label/td
/tr
/table
/form
網(wǎng)頁(yè)名稱:排序javascript,排序要求合并單元格具有相同大小
文章源于:http://chinadenli.net/article4/dsehdoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、靜態(tài)網(wǎng)站、云服務(wù)器、品牌網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)