交換排序的基本思想是:交換,就是根據序列中兩個記錄鍵值的比較結果來對換這兩個記錄在序列中的位置,交換排 序的特點是:將鍵值較大的記錄向序列的尾部移動,鍵值較小的記錄向序列的前部移動。
交換排序有氣泡排序和快速排序
氣泡排序有基礎寫法和優化後寫法,我們先來看最基礎的氣泡排序:
特性:
1丶時間複雜度:o(n^2)
2丶空間複雜度:o(1)
3丶穩定性:穩定
下面是**實現:
public class bubblesort }}
}public static void main(string args) ;
bubble(array);
system.out.println(arrays.tostring(array));}}
結果如下:![](https://pic.w3help.cc/3c7/451e5d33478292eaed5e6426b1d94.jpeg)
上面是氣泡排序最基礎的寫法,下面介紹一種優化後的氣泡排序:
public class bubblesort
}if(!f)}}
public static void main(string args) ;
bubble(array);
system.out.println(arrays.tostring(array));}}
結果同上
下面介紹快速排序
快速排序是hoare於2023年提出的一種二叉樹結構的交換排序方法,其基本思想為:任取待排序元素序列中 的某元素作為基準值,按照該排序碼將待排序集合分割成兩子串行,左子串行中所有元素均小於基準值,右 子串行中所有元素均大於基準值,然後最左右子串行重複該過程,直到所有元素都排列在相應位置上為止。
快速排序特性:
1丶時間複雜度:o(n*logn)
2丶空間複雜度:o(logn)
3丶穩定性:不穩定
**實現如下:
public static int partion(int array,int low,int high)
if (high >= low) else
}while (low < high)
if (low >= high) else
}array[low] = temp;
return low;
}public static void insertsort(int array,int start,int end) else
}array[j+1] = temp;}}
public static void quick(int array,int start,int end)
int par = partion(array,start,end);
//找左邊是否有兩個資料以上
if(par > start+1)
//右邊是否有兩個資料以上
if(par < end-1)
}//快速排序
public static void quicksort(int array)
結果如下:![](https://pic.w3help.cc/4e9/d5f42efb969f0b5eb5b4d31308e1e.jpeg)
以上就是氣泡排序及其優化和快速排序。
交換排序 氣泡排序
交換排序 兩兩比較待排序記錄的關鍵碼,若是逆序,則交換,直到無逆序。其中最簡單的交換排序是 氣泡排序。氣泡排序 bubble sort,也叫起泡排序 不斷地比較相鄰的記錄,若是不滿足排序要求,則交換。交換時,可從前向後,也可從後向前。看乙個從前向後的排序過程 原序列 12 3 45 33 6 下標 ...
氣泡排序 交換排序
最壞情況下,直接插入排序時間複雜度為 n 最小時間代價為 n 平均時間代價為 n 附加儲存空間 乙個儲存單位 穩定性 穩定 原址性 是 緊緻性 乙個比較,三個賦值操作 特點 對於基本有序,或偶爾有幾個在有序位置附近時,效率高,只有直接插入排序和它達到一樣的效果 整體效果不如直接插入排序,因為,直接插...
交換排序 氣泡排序
1.原理 從小到大排序 存在10個不同大小的氣泡,由底至上地把較少的氣泡逐步地向上公升,這樣經過遍歷一次後,最小的氣泡就會被上公升到頂 下標為0 然後再從底至上地這樣公升,迴圈直至十個氣泡大小有序。在 氣泡排序中,最重要的思想是兩兩比較,將兩者較少的公升上去 氣泡排序最壞情況的時間複雜度是o n 2...