排序原理:
1. 比較相鄰的元素。如果前乙個元素比後乙個元素大,就交換這兩個元素的位置。
2. 對每一對相鄰元素做同樣的工作,從開始第一對元素到結尾的最後一對元素。最終最後位置的元素就是最大 值。
氣泡排序的**實現:
public static void sortpop(int arr)}}
}}
測試:
public static void main(string args);
sortpop(arr);
for(int i=0;i排序原理:1.
每一次遍歷的過程中,都假定第乙個索引處的元素是最小值,和其他索引處的值依次進行比較,如果當前索引處
的值大於其他某個索引處的值,則假定其他某個索引出的值為最小值,最後可以找到最小值所在的索引
2.交換第乙個索引處和最小值所在的索引處的值
選擇排序的**實現:
public static void selectsort(int arr)
}//交換i索引處和minindex索引處的值
int temp = arr[i];
arr[i] = arr[minindex];
arr[minindex] = temp;
}}
測試**實現:
public static void main(string args) ;
selectsort(a);
system.out.println(arrays.tostring(a));
}
排序原理:1.
把所有的元素分為兩組,已經排序的和未排序的;
2.找到未排序的組中的第乙個元素,向已經排序的組中進行插入;
3.倒敘遍歷已經排序的元素,依次和待插入的元素進行比較,直到找到乙個元素小於等於待插入元素,那麼就把待
插入元素放到這個位置,其他的元素向後移動一位;
插入排序的**實現:
public static void insertsort(int arr) else }}
}
之前我們學習過基礎排序,包括氣泡排序,選擇排序還有插入排序,並且對他們在最壞情況下的時間複雜度做了分
析,發現都是
o(n^2)
,而平方階通過我們之前學習演算法分析我們知道,隨著輸入規模的增大,時間成本將急劇上
公升,所以這些基本排序方法不能處理更大規模的問題,接下來我們學習一些高階的排序演算法,爭取降低演算法的時間
複雜度最高端次冪。
排序原理:1.
選定乙個增長量
h,按照增長量
h作為資料分組的依據,對資料進行分組;
2.對分好組的每一組資料完成插入排序;
3.減小增長量,最小減為
1,重複第二步操作。
**實現:
public static void hashsort(int arr)else}}
h=h/2;
}}
《資料結構與演算法 排序》
1 快速排序 1.記錄 排序中的結點 2.檔案 一系列結點構成的線性表 3.排序又稱分類 4.排序碼 結點中乙個或者多個字段,其值作為排序運算中的根據。基本思想 每次選擇待排序的記錄序列的第1個記錄,按照排序碼的大小將其插入到已排序的記錄序列的適當位置,直到所有記錄全部排序完畢。最簡單的排序方法。整...
演算法與資料結構 排序
void x sort elementtype a,int n 預設討論從小到大的整數排序void bubble sort elementtype a,int n if flag 0 break 無交換則退出 void insert sort elementtype a,int n a i tmp ...
資料結構與演算法 排序演算法
帶問題思考以下幾點 1 每個演算法的思想是什麼?2 每個演算法的穩定性怎樣?時間複雜度是多少?3 在什麼情況下,演算法出現最好情況 or 最壞情況?4 每種演算法的具體實現又是怎樣的?n每次選擇乙個元素k插入到之前已排好序的部分a 1 i 中,插入過程中k依次由後向前與a 1 i 中的元素進行比較。...