เทคโนโลยีใหม่มีการเปลี่ยนแปลงอยู่ตลอดเวลาและการเรียนรู้พื้นฐานบางอย่างเป็นรากฐานที่แข็งแกร่งสำหรับการเรียนรู้และปรับปรุงเทคโนโลยีอย่างต่อเนื่องในอนาคต ฉันไม่มีอะไรจะทำเมื่อเร็ว ๆ นี้ เพื่อตรวจสอบโครงสร้างข้อมูลที่ฉันได้เรียนรู้มาก่อนฉันใช้อัลกอริทึมการเรียงลำดับในโครงสร้างข้อมูลใน JS และการสาธิตแบบฝังในตอนท้ายของบทความนี้
การเรียงลำดับง่ายๆ
จัดเรียงฟอง
การเรียงลำดับฟองเป็นอัลกอริทึมการเรียงลำดับที่ง่ายที่สุดโดยมีความซับซ้อนของเวลาสี่เหลี่ยมจัตุรัส N และรหัสมีดังนี้:
ฟังก์ชัน Bubblesort (อาร์เรย์) {สำหรับ (var i = 0; i <array.length; i ++) {สำหรับ (var j = array.length; j> 0; j--) {ถ้า (อาร์เรย์ [j] <อาร์เรย์ [j - 1]) {var temp = array [j - 1]; Array [J - 1] = Array [J]; อาร์เรย์ [j] = อุณหภูมิ; }} /* ผลลัพธ์ผลลัพธ์* /document.write ("นี่คือ + (i + 1) +" ลูปที่สอง ・ ผลลัพธ์คือ: "); สำหรับ (var k = 0; k <array.length; k ++) {document.write (array [k] +", ");} document.writeการเรียงลำดับโดยตรง
การเรียงลำดับการแทรกโดยตรงยังเป็นอัลกอริทึมการเรียงลำดับที่เรียบง่ายและความซับซ้อนของเวลาก็ยกกำลังสองโดย N แต่ประสิทธิภาพดีกว่าการเรียงลำดับฟองเล็กน้อย รหัสมีดังนี้:
ฟังก์ชั่น insertSort (อาร์เรย์) {var temp; สำหรับ (var i = 1; i <array.length; i ++) {var temp = array [i]; สำหรับ (var j = i; j> 0 && temp <array [j - 1]; j--) {array [j] = array [j - 1]; } array [j] = temp /* ผลลัพธ์ผลลัพธ์* /document.write ("th? + i +" ผลลัพธ์ของการสั่งซื้อผ่านคือ: ") สำหรับ (var n = 0; n <array.length; n ++) {document.write (array [n] +", ");} document.writeเลือกเรียงลำดับ
การเรียงลำดับการเลือกยังเป็นอัลกอริทึมการเรียงลำดับที่ง่ายด้วยความซับซ้อนของเวลาของ N กำลังสองและประสิทธิภาพก็ดีกว่าการเรียงลำดับฟองเล็กน้อย รหัสมีดังนี้:
ฟังก์ชั่น SelectSort (อาร์เรย์) {var min, temp; - สำหรับ (var i = 0; i <array.length; i ++) {min = i; สำหรับ (var j = i+1; j <array.length; j ++) {if (array [min]> array [j]) min = j; } if (min! = i) {temp = array [i]; Array [i] = Array [min]; อาร์เรย์ [ขั้นต่ำ] = อุณหภูมิ; } /* ผลลัพธ์ผลลัพธ์* /document.write ("+ i+" ผลลัพธ์ของการสั่งซื้อผ่านคือ: ") สำหรับ (var n = 0; n <array.length; n ++) {document.write (array [n]+", ");} document.write (" <br /> ") /*การเรียงลำดับที่ซับซ้อน
เนินเขา
การเรียงลำดับฮิลล์เป็นการอัพเกรดการเรียงลำดับการแทรก ในปี 1959 ฮิลล์บุกผ่านความซับซ้อนของเวลาของ N Square โดยการเปลี่ยนการเปรียบเทียบแบบคู่ในการเรียงลำดับอย่างง่ายเพื่อตั้งค่าการเปรียบเทียบการกระโดดแบบขั้นตอน การเรียงลำดับของเนินเขาเริ่มจาก nlogn ที่ดีที่สุดไปจนถึงตาราง n ที่เลวร้ายที่สุดตามความซับซ้อนของเวลาที่แตกต่างกันของขนาดขั้นตอน รหัสมีดังนี้:
ฟังก์ชั่นจะเป็น (อาร์เรย์) {var uprement = array.length; var i var temp; // เก็บ var count = 0; ทำ {เพิ่ม = math.floor (เพิ่มขึ้น / 3) + 1; สำหรับ (i = เพิ่มขึ้น; i <array.length; i ++) {ถ้า (array [i] <array [i - เพิ่ม]) {temp = array [i]; สำหรับ (var j = i - เพิ่ม; j> 0 && temp <array [j]; j - = เพิ่มขึ้น) {array [j + เพิ่ม] = array [j]; } array [j + เพิ่ม] = temp; /* ผลลัพธ์ผลลัพธ์*/ count ++; document.write ("<br />+ count+" ผลลัพธ์ของการสั่งซื้อของการส่งผ่านคือ: ") สำหรับ (var n = 0; n <array.length; n ++) {document.write (อาร์เรย์ [n]+", ");} /* ผลลัพธ์ผลลัพธ์สิ้นสุด* /}}}การจัดเรียงกอง
การเรียงลำดับฮีปเป็นการอัพเกรดเพื่อเลือกการเรียงลำดับ ด้วยการสร้างกองบนขนาดใหญ่อย่างต่อเนื่องหรือกองด้านบนขนาดเล็กเลือกค่าที่ใหญ่ที่สุดหรือเล็กที่สุดและวางไว้ที่ปลายด้านหน้าของคิวสำหรับการเรียงลำดับ ความซับซ้อนของเวลาของการเรียงลำดับฮีปในกรณีใด ๆ คือ nlogn รหัสมีดังนี้:
ฟังก์ชั่น heapsort (อาร์เรย์) {var temp; var i; สำหรับ (i = math.floor (array.length / 2); i> = 0; i--) {heapadjust (อาร์เรย์, i, array.length-1); // สร้างอาร์เรย์อาร์เรย์ลงในฮีปด้านบนขนาดใหญ่} สำหรับ (i = array.length-1; i> = 0; i--) {/*เปลี่ยนโหนดรูทออก*/temp = array [i]; อาร์เรย์ [i] = อาร์เรย์ [0]; อาร์เรย์ [0] = อุณหภูมิ; /*อาร์เรย์ที่เหลือยังคงถูกสร้างขึ้นในกองบนขนาดใหญ่*/ heapadjust (อาร์เรย์, 0, i - 1); /* ผลลัพธ์ผลลัพธ์*/document.write ("<br/>+ (array.length - i) .toString ()+" ผลลัพธ์ของการสั่งซื้อผ่านคือ: ") สำหรับ (var n = 0; n <array.length; n ++) {document.write (array [n]+", "); ตัวห้อยสำหรับอาร์เรย์ // สูงสุดเป็นตัวห้อยของฟังก์ชั่นอาร์เรย์ heapadjust (อาร์เรย์, เริ่มต้น, สูงสุด) {var temp, j; เด็ก ๆ ++ j;การเรียงลำดับ
การเรียงลำดับการผสานเป็นการเรียงลำดับที่เสถียรเพียงอย่างเดียวในการเรียงลำดับที่ซับซ้อน มันจัดเรียงโดยการแยกแล้วรวมอาร์เรย์ที่จะจัดเรียง สี่เหลี่ยมจัตุรัสของความซับซ้อนของเวลาการเรียงลำดับการรวมคือ n รหัสมีดังนี้:
// แหล่งที่มาของอาร์เรย์แหล่งข้อมูล // dest เป้าหมายอาร์เรย์ // s เริ่มต้นตัวห้อย // t ฟังก์ชั่นตัวห้อยเป้าหมาย msort (แหล่งที่มา, dest, s, t) {var m; // เลือกค่ากลาง var dest2 = new Array (); if (s == t) {dest [s] = แหล่งที่มา [s]; } else {m = math.floor ((s + t) / 2); msort (แหล่งที่มา, dest2, m+1, t); ผสาน (dest2, dest, s, m, t); /* ผลลัพธ์ผลลัพธ์*/document.write ("<br/>+++ count+" ผลลัพธ์ของการเรียงลำดับคือ: ") สำหรับ (var n = 0; n <dest.length; n ++) {document.write (อาร์เรย์ [n]+", ");}/* Subscript // M Second Array Subment Function // ความยาวรวมผสาน (แหล่งที่มา, dest, s, m, n) {สำหรับ (var j = m+1, k = s; j <= n && s <= m; k ++) จุดสิ้นสุดของ dest if (s <= m) {สำหรับ (var l = 0; l <= m - s; l ++) {dest [k+l] = แหล่งที่มา [s+l];จัดเรียงอย่างรวดเร็ว
การเรียงลำดับอย่างรวดเร็วเป็นประเภทที่รู้จักกันเร็วที่สุดโดยมีความซับซ้อนของเวลาของ Nlogn และรหัสมีดังนี้:
count var = 0; ฟังก์ชั่น Quicksort (อาร์เรย์, ต่ำ, สูง) {var temp; ถ้า (ต่ำ <สูง) {var keypoint = QuickSorthelp (อาร์เรย์, ต่ำ, สูง); นับ ++; document.write ("<br /> terminal? + count +" ผลลัพธ์ของการสั่งซื้อของการสั่งซื้อคือ?: ") สำหรับ (var l = 0; l <array.length; l ++) {document.write (อาร์เรย์ [l] +", "); ต่ำ, สูง) {ในขณะที่ (ต่ำ) {ในขณะที่ (ต่ำสุด & & array [ต่ำ] <= อาร์เรย์ [สูง]) {สูง-; อาร์เรย์ [สูง];บทสรุปข้างต้นของวิธีการเรียงลำดับต่าง ๆ (การใช้งาน JS) ในโครงสร้างข้อมูลคือเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น