簡單排序演算法
- 概念:將一組無序的數列,排序成有序數列,升序列和降序列。
升序:後面的值一定比前面任意一個值要大。
1,7,9,10,11,12,19,20,21
降序:後面的值一定比前面任意一個值要小。
20,19,8,7,5,1.0,-1
一、氣泡排序
1.1 概念
概念:將相鄰的兩個元素進行比較,以升序列為例,如果前面的值比後面的值大了,則兩者交換,否則不交換。
比如:7,9,6,10,11,5,4
排序為升序列:4,5,6,7,9,10,11
1.2 氣泡排序圖解
1.3 實現程式碼
public class BubbleSort {
public static void main(String[] args) {
int[] num = {7,9,6,10,11,5,4};
System.out.print("排序前:");
for(int i = 0;i < num.length;i++) {
System.out.print(num[i]+",");
}
//排序:
for(int i = 0;i < num.length;i++) {
for(int j = 0;j < num.length-1-i;j++) {
if(num[j] > num[j+1]) {
int temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
}
}
}
System.out.println();
System.out.print("排序後:");
for(int i = 0;i < num.length;i++) {
System.out.print(num[i]+",");
}
}
}
二、選擇排序
2.1 概念
依次取到陣列的每一個下標,用該下標的後面所有元素與該下標的元素進行比較,如果是升序列,該下標元素值比後面元素值大了,則兩者交換。否則不交換。
2.2 選擇排序圖解
2.3 實現程式碼
public class SelectSort {
public static void main(String[] args) {
int[] num = {1,11,9,8,3,2,7};
System.out.print("排序前:");
for(int i = 0;i < num.length;i++) {
System.out.print(num[i]+",");
}
//排序:
for(int i = 0, len = num.length-1;i < len;i++) {
for(int j = i+1;j < num.length;j++) {
if(num[i] > num[j]) {
int temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
System.out.println();
System.out.print("排序後:");
for(int i = 0;i < num.length;i++) {
System.out.print(num[i]+",");
}
}
}
三、插入排序
3.1 概念
1)把所有的元素分為兩組,已排序和未排序的。
2)找到未排序的組中的第一個元素,向已經排序的陣列中進行插入。
3)倒敘遍歷已經排序的元素,一次和待插入的元素進行比較,知道找到一個元素小於等於待插入元素,那麼就把待插入元素放到這個位置。
3.2 插入排序圖解
圖示說明:首先將第一個元素定義為已排序的組,其餘的元素為未排序的組,接下來每次取未排序組裡面的第一個元素,從已排序組裡面倒著遍歷,將遍歷到的元素和選出未排序的第一個元素進行比較,如果前者比後者元素值大,則兩者交換,直到該元素在已排序元素中遇到比它還小或者等於的元素,結束。
3.3 實現程式碼
/**
*
* <p>Title: InsertSort</p>
* <p>Description: 插入排序</p>
* @author Alon
* @date 2020年8月2日 下午4:07:58
* @version 1.0
*/
public class InsertSort {
public static void main(String[] args) {
//排序:
sort();
}
/**
*
*<p>Title: sort</p>
*<p>Description: 插入排序</p>
*/
public static void sort() {
//定義一個陣列
int[] num = {4,3,2,10,12,1,5,6};
//排序前:
System.out.print("排序前:");
for(int i = 0;i < num.length;i++) {
System.out.print(num[i]+",");
}
//排序:外層排序表示取到從1及以後的每一個下標索引,i處值實際為未排序的第一個元素
for(int i = 1;i < num.length;i++) {
//內層迴圈是倒著遍歷已排序的組
for(int j = i;j > 0;j--) {
//比較,用未排序中的第一個元素和已排序中的每一個元素比較
if(num[j-1] > num[j]) {
//交換
int temp = num[j-1];
num[j-1] = num[j];
num[j] = temp;
}else {
//否則說明找到了比自己小於或者等於的元素了,停止內層迴圈
break;
}
}
}
System.out.println();
System.out.print("排序後:");
for(int i = 0;i < num.length;i++) {
System.out.print(num[i]+",");
}
}
}
聯絡郵箱:alon_note@163.com
公眾號:菜鳥崛起
相關文章
- 排序演算法——簡單選擇排序排序演算法
- 簡單的幾個排序演算法排序演算法
- 演算法學習之簡單排序演算法排序
- 簡單排序排序
- 7.1簡單排序排序
- 簡單快速排序排序
- 簡單堆排序排序
- 簡單選擇排序就是簡單~~~排序
- 【小小前端】前端排序演算法第三期(不簡單選擇排序-堆排序)前端排序演算法
- 【演算法】排序04——程式碼簡約而不簡單的希爾排序(含程式碼實現)演算法排序
- 簡單的排序方法排序
- 字串-簡單字串排序字串排序
- 簡單選擇排序排序
- Java常見排序演算法之插入排序-簡單的效能優化技巧Java排序演算法優化
- 快速排序的簡單理解排序
- 1545 最簡單排序排序
- 史上最簡單的排序演算法?看起來卻滿是bug排序演算法
- 最簡單易懂的三種排序演算法:冒泡、選擇、插入排序演算法
- 菜鳥必看的排序演算法(簡單通俗)及程式碼實現,幾張圖帶你吃透排序演算法排序演算法
- 堆排序就這麼簡單排序
- 氣泡排序的簡單理解排序
- 選擇排序的簡單理解排序
- 基數排序的簡單理解排序
- 歸併排序的簡單理解排序
- JavaScript希爾排序簡單介紹JavaScript排序
- 快速排序就這麼簡單排序
- 【筆記】簡單選擇排序筆記排序
- MapReduce應用案例--簡單排序排序
- 簡單易懂的氣泡排序排序
- js數值排序中冒泡演算法的4種簡單實現JS排序演算法
- 淺解前端必須掌握的演算法(二):簡單選擇排序前端演算法排序
- 資料結構與演算法——基數排序簡單Java實現資料結構演算法排序Java
- 簡單演算法演算法
- C#資料結構與演算法4-C# 簡單排序方法C#資料結構演算法排序
- 氣泡排序就這麼簡單排序
- 基數排序就這麼簡單排序
- 歸併排序就這麼簡單排序
- 插入排序就這麼簡單排序