一 快速排序
1.1 啥是快速排序?
快速排序的基本思想是基于分治法,在待排序表L[1…n]中任选一个元素作为基准,通过一趟排序将待排序表划分为独立的两个部分L[1…k-1],L[k+1…n];一部分全大于它,一部分全小于它;
package com.thread.changesort;
/**
* @description:快速排序
* @author: Sw_Ljb
* @PACKAGE_NAME:com.thread.test02
* @time: 2022/8/18 上午11:00
* @version: 1.0
*/
public class QuickPaiXun {
public static void main(String[] args) {
Integer[] array = new Integer[]{49,38,65,97,76,13,27};
quickMechod(array,0,array.length-1);
for (Integer integer : array) {
System.out.print(integer + ",");
}
}
private static void quickMechod(Integer[] array,Integer low,Integer high) {
//1、得到当前存在的数据的 选定基准的前后数据
if (low<high) {
Integer privotpos = Partition(array, low, high);
quickMechod(array, low, high-1);
quickMechod(array, low+1, high);
}
}
private static Integer Partition(Integer[] array, Integer low, Integer high) {
Integer jizhun = array[low];
while (low<high){
while (low<high&&array[high]>=jizhun){
--high;
}
array[low]= array[high];
while (low<high&&array[low]<=jizhun){
++low;
}
array[high]= array[low];
}
array[low] = jizhun;
return low;
}
}
二 冒泡排序
2.1 冒泡排序的基本思想
从后往前(从前往后)两两比较相邻元素的值,若为逆序,则交换他们,一个原则小数上浮,大数下沉;
package com.thread.changesort;
/**
* @description:冒泡排序
* @author: Sw_Ljb
* @PACKAGE_NAME:com.thread.changesort
* @time: 2022/8/18 下午5:04
* @version: 1.0
*/
public class BubbleSort {
/**
* 冒泡排序 ==》大数下沉 小数上浮
* @param args
*/
public static void main(String[] args) {
Integer[] array = new Integer[]{49,38,65,97,76,13,27};
bubbleSortMethod(array);
for (Integer integer : array) {
System.out.print(integer+",");
}
}
private static void bubbleSortMethod(Integer[] array){
//添加是否发送交换的标志位
Integer n = array.length - 1;
Integer i ;
boolean flag;
for ( i = 0; i < n; i++) {
//在进行比较前,先将标志为设置为 不进行交换
flag = false;
for (int k = n; k >i; k--) {
//System.out.println(k);
if (array[k-1]>array[k]){
Integer c = 0;
c = array[k-1];
array[k-1] = array[k];
array[k] =c;
flag =true;
}
if (flag ==false) {
continue;
}
}
}
}
private static void swap(Integer a,Integer b){
Integer c = 0;
c= a;
a =b;
b=c;
}
}