public static void bubbleSort(int[] arr) {
//冒泡排序 时间复杂度n2,空间复杂度1,稳定排序
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
//与冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换来排序
public static void quickSort(int[] arr, int start, int end) {
//快速排序 时间复杂度nlogn,空间复杂度logn,不稳定排序
//递归结束条件
System.out.println("start:" + start + ",end:" + end);
if (start >= end) {
return;
}
int partitionIndex = partition(arr, start, end);
System.out.println(" partitionIndex:" + partitionIndex);
quickSort(arr, start, partitionIndex - 1);
quickSort(arr, partitionIndex + 1, end);
}
//获取基准位置 - 分治法
public static int partition(int[] arr, int start, int end) {
int pivot = arr[start];
int left = start;
int right = end;
while (left < right) {
while (left < right && arr[right] > pivot) {
right--;
}
while (left < right && arr[left] <= pivot) {
left++;
}
if (left < right){
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
}
}
//交换pivot到中间位置
arr[start] = arr[left];
arr[left] = pivot;
return left;
}
public static void main(String[] args) {
int[] arr = {3,6,2,1,9,7,5};
// bubbleSort(arr);
quickSort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
冒泡排序+快速排序
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 排序算法——希尔排序 希尔排序是插入排序的一种,又称"缩小增量排序”,是插入排序算法的一种更高效的改进版本。 希尔...
- 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序...
- 1、冒泡排序 图解: 2、选择排序 图解: 3、快速排序 图解: 4、插入排序 图解: 5、希尔排序 图解: 6、...
- 前言## 还记得我们学习C语言的时候的常用的三大排序吗?选择、冒泡、快速排序当时学习的时候感觉好无聊、听着也没有什...