วิธีการเรียงลำดับอย่างรวดเร็วส่วนใหญ่ใช้ array.sort () เพื่อใช้งาน
วิธีการฟองคือการใช้อาร์เรย์แบบสำรวจเพื่อเปรียบเทียบและเพื่อสำรวจค่าต่ำสุดหรือสูงสุดหนึ่งทีละหนึ่งผ่านการเปรียบเทียบอย่างต่อเนื่อง
วิธีการเรียงลำดับการเลือกคือการใช้ข้อมูลแรกของอาร์เรย์เป็นค่าที่ใหญ่ที่สุดหรือเล็กที่สุดจากนั้นส่งออกอาร์เรย์ที่สั่งซื้อผ่านลูปเปรียบเทียบ
แทรกการเรียงลำดับคือการเลือกข้อมูลในอาร์เรย์และเรียงลำดับในตอนท้ายโดยการแทรกและเปรียบเทียบอย่างต่อเนื่อง
การคัดลอกรหัสมีดังนี้:
แพ็คเกจ com.firewolf.sort;
Mysort ชั้นเรียนสาธารณะ {
-
* @param args
-
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
int array [] = {45,32,54,12,43,65,11,3,43,6,33,90,44,1,178};
mysort mysort = new mysort ();
mysort.insertsort (อาเรย์);
System.out.print ("แทรกผลการเรียงลำดับ:");
mysort.printarray (อาร์เรย์);
System.out.println ();
mysort.bubblesort (อาร์เรย์);
System.out.print ("ผลการเรียงลำดับฟอง:");
mysort.printarray (อาร์เรย์);
mysort.qsort (อาร์เรย์);
System.out.println ();
System.out.print ("การเรียงลำดับอย่างรวดเร็ว:");
mysort.printarray (อาร์เรย์);
mysort.shellsort (อาร์เรย์);
System.out.println ();
System.out.print ("ผลการเรียงลำดับฮิลล์:");
mysort.printarray (อาร์เรย์);
mysort.selectsort (อาร์เรย์);
System.out.println ();
System.out.print ("เลือกเรียงลำดับผลลัพธ์:");
mysort.printarray (อาร์เรย์);
-
-
* เรียงลำดับการแทรกโดยตรง
* แนวคิดพื้นฐาน: ในชุดตัวเลขที่จะเรียงลำดับโดยสมมติว่าหมายเลขก่อนหน้า (N-1) [n> = 2] มีอยู่แล้วในลำดับตอนนี้คุณต้องแทรกหมายเลข n ไว้ในหมายเลขที่สั่งซื้อในลำดับก่อนหน้านี้ . สิ่งนี้ทำให้ตัวเลข n เหล่านี้เรียงลำดับตามลำดับ ทำซ้ำรอบนี้จนกว่าจะมีการจัดเรียงตามลำดับ
-
ช่องว่างสาธารณะ insertSort (int [] array) {
int temp = 0;
สำหรับ (int i = 1; i <array.length; i ++) {
int j = i-1;
temp = array [i];
สำหรับ (; j> = 0 && temp <array [j]; j-) {
อาร์เรย์ [j+1] = อาร์เรย์ [j];
-
อาร์เรย์ [j+1] = อุณหภูมิ;
-
-
-
* การจัดเรียงฟอง
* แนวคิดพื้นฐาน: ในชุดตัวเลขที่จะจัดเรียงให้เปรียบเทียบและปรับตัวเลขที่อยู่ติดกันทั้งสองจากบนลงล่างเพื่อสร้างตัวเลขที่ใหญ่ขึ้นเพื่อจมขนาดเล็กขึ้น นั่นคือเมื่อใดก็ตามที่มีการเปรียบเทียบตัวเลขสองตัวที่อยู่ติดกันและพบว่าการเรียงลำดับของพวกเขาตรงข้ามกับข้อกำหนดการเรียงลำดับพวกเขาจะถูกแลกเปลี่ยน
-
โมฆะสาธารณะ Bubblesort (int [] array) {
อุณหภูมิ int;
สำหรับ (int i = 0; i <array.length; i ++) {// จำนวนการเดินทาง
สำหรับ (int j = 0; j <array.length-i-1; j ++) {// จำนวนการเปรียบเทียบ
if (array [j]> array [j+1]) {
อุณหภูมิ = อาร์เรย์ [j];
อาร์เรย์ [j] = อาร์เรย์ [j+1];
อาร์เรย์ [j+1] = อุณหภูมิ;
-
-
-
-
-
* จัดเรียงอย่างรวดเร็ว
* แนวคิดพื้นฐาน: เลือกองค์ประกอบมาตรฐานโดยปกติแล้วองค์ประกอบแรกหรือองค์ประกอบสุดท้ายและผ่านการสแกนแบ่งลำดับที่จะจัดเรียงเป็นสองส่วน องค์ประกอบมาตรฐาน
* @param Array
-
โมฆะสาธารณะ QSort (int array []) {
if (array.length> 1) {
_qsort (อาร์เรย์, 0, array.length-1);
-
-
-
* การจัดเรียงอย่างรวดเร็วสำหรับการเดินทางครั้งเดียว
* @param Array
-
โมฆะส่วนตัว _qsort (int [] อาร์เรย์, int ต่ำ, int สูง) {
ถ้า (ต่ำ <สูง) {
int middle = getMiddle (อาร์เรย์, ต่ำ, สูง);
_qsort (อาร์เรย์, ต่ำ, middle-1);
_qsort (อาร์เรย์, กลาง+1, สูง);
-
-
-
* รับค่ากลาง
-
private int getMiddle (int [] อาร์เรย์, int ต่ำ, int สูง) {
int tmp = อาร์เรย์ [ต่ำ];
ในขณะที่ (ต่ำ <สูง) {
ในขณะที่ (ต่ำ <สูง && อาร์เรย์ [สูง]> = tmp)
สูง--;
อาร์เรย์ [ต่ำ] = อาร์เรย์ [สูง];
ในขณะที่ (ต่ำ <high && array [ต่ำ] <= tmp)
ต่ำ ++;
อาร์เรย์ [สูง] = อาร์เรย์ [ต่ำ];
-
อาร์เรย์ [ต่ำ] = TMP;
กลับต่ำ;
-
-
* เรียงลำดับการเลือกอย่างง่าย
* แนวคิดพื้นฐาน: ในชุดของตัวเลขที่จะเรียงลำดับเลือกจำนวนที่น้อยที่สุดและแลกเปลี่ยนกับหมายเลขในตำแหน่งแรก; วิธีการเปรียบเทียบจำนวนสุดท้ายจะถูกนำมาเปรียบเทียบกับหมายเลขสุดท้าย
* @param Array
-
โมฆะสาธารณะ SelectSort (int [] array) {
ตำแหน่ง int = 0;
สำหรับ (int i = 0; i <array.length; i ++) {
int j = i+1;
ตำแหน่ง = i;
int temp = array [i];
สำหรับ (; j <array.length; j ++) {
if (array [j] <temp) {
อุณหภูมิ = อาร์เรย์ [j];
ตำแหน่ง = J;
-
-
อาร์เรย์ [ตำแหน่ง] = อาร์เรย์ [i];
อาร์เรย์ [i] = อุณหภูมิ;
-
-
-
* Hill Sort (เรียงลำดับขั้นต่ำ)
* แนวคิดพื้นฐาน: อัลกอริทึมแบ่งหมายเลขก่อนที่จะจัดเรียงเป็นหลายกลุ่มตามการเพิ่มขึ้น D (n/2, n คือจำนวนตัวเลขที่จะเรียงลำดับ) และตัวห้อยที่บันทึกในแต่ละกลุ่มแตกต่างจาก d สำหรับแต่ละกลุ่มองค์ประกอบทั้งหมดจะถูกจัดเรียงโดยตรงจากนั้นจัดกลุ่มด้วยการเพิ่มขึ้นที่เล็กลง (d/2) จากนั้นจัดเรียงโดยตรงในแต่ละกลุ่ม เมื่อการเพิ่มขึ้นเป็น 1 การเรียงลำดับจะเสร็จสมบูรณ์หลังจากดำเนินการเรียงลำดับการแทรกโดยตรง
* @param Array
-
โมฆะสาธารณะ Shellsort (int [] array) {
double d1 = array.length;
int temp = 0;
ในขณะที่ (จริง) {
d1 = math.ceil (d1/2);
int d = (int) d1;
สำหรับ (int x = 0; x <d; x ++) {
สำหรับ (int i = x+d; i <array.length; i+= d) {
int j = id;
temp = array [i];
สำหรับ (; j> = 0 && temp <array [j]; j- = d) {
อาร์เรย์ [j+d] = อาร์เรย์ [j];
-
อาร์เรย์ [j+d] = อุณหภูมิ;
-
-
ถ้า (d == 1)
หยุดพัก;
-
-
-
* พิมพ์องค์ประกอบทั้งหมดในอาร์เรย์
-
Public PrintArray (int [] array) {
สำหรับ (int i = 0; i <array.length; i ++) {
System.out.print (Array [i]+"");
-
-
-
นี่คือตัวอย่างของวิธีการเรียงลำดับที่ใช้แยกต่างหาก
การเรียงลำดับอย่างรวดเร็วโดยใช้วิธีการเรียงลำดับด้วยอาร์เรย์
การคัดลอกรหัสมีดังนี้:
นำเข้า Java.util.Arrays;
ชั้นเรียนสาธารณะ test2 {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
int [] a = {5,4,2,4,9,1};
array.sort (a);
สำหรับ (int i: a) {
System.out.print (i);
-
-
-
อัลกอริทึมการเรียงลำดับฟอง
การคัดลอกรหัสมีดังนี้:
สาธารณะคงที่ int [] bubblesort (int [] args) {// อัลกอริทึมการเรียงลำดับฟอง
สำหรับ (int i = 0; i <args.length-1; i ++) {
สำหรับ (int j = i+1; j <args.length; j ++) {
if (args [i]> args [j]) {
int temp = args [i];
args [i] = args [j];
args [j] = อุณหภูมิ;
-
-
-
กลับ args;
-
เลือกอัลกอริทึมการเรียงลำดับ
การคัดลอกรหัสมีดังนี้:
public Static int [] selectSort (int [] args) {// เลือกอัลกอริทึมการเรียงลำดับ
สำหรับ (int i = 0; i <args.length-1; i ++) {
int min = i;
สำหรับ (int j = i+1; j <args.length; j ++) {
if (args [min]> args [j]) {
min = j;
-
-
ถ้า (min! = i) {
int temp = args [i];
args [i] = args [min];
args [min] = temp;
-
-
กลับ args;
-
แทรกอัลกอริทึมการเรียงลำดับ
การคัดลอกรหัสมีดังนี้:
สาธารณะคงที่ int [] insertSort (int [] args) {// อัลกอริทึมการเรียงลำดับ
สำหรับ (int i = 1; i <args.length; i ++) {
สำหรับ (int j = i; j> 0; j-) {
ถ้า (args [j] <args [j-1]) {
int temp = args [j-1];
args [j-1] = args [j];
args [j] = อุณหภูมิ;
} else break;
-
-
กลับ args;
-
ข้างต้นเป็นวิธีการเรียงลำดับสี่วิธีใน Java วิธีการที่แตกต่างกันมีประสิทธิภาพที่แตกต่างกัน
การเรียงลำดับฟอง: การเปรียบเทียบ O (N2) การแลกเปลี่ยนข้อมูล O (N2)
เลือกเรียงลำดับ: เปรียบเทียบ O (N2) การแลกเปลี่ยนข้อมูล o (n)
แทรกการเรียงลำดับ: เปรียบเทียบ O (N2) คัดลอกข้อมูล o (n)
ในการใช้งานจริงเราควรพยายามเลือกอัลกอริทึมที่มีประสิทธิภาพ