/**
* 冒泡排序
*/
public static void bubble(int[] arr) {
for(int i=1;i<arr.length;i++) {
for(int j=0;j<arr.length-i;j++) {
if(arr[j]>arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
/**
* 插入排序
*/
public static void insert(int[] arr) {
for(int i=1;i<arr.length;i++) {
int j = i ;
int temp = arr[i];
for(;j>=1&&temp<arr[j-1];j--) {
arr[j] = arr[j-1];
}
arr[j] = temp;
}
}
/**
* 选择排序
*/
public static void select(int[] arr) {
for(int i=0;i<arr.length;i++) {
int index = i; //最小值元素对应的下标
int min = arr[i]; //最小值元素
for(int j=i+1;j<arr.length;j++) {
if(min > arr[j]) {
min = arr[j];
index = j;
}
}
int temp = arr[i];
arr[i] = min;
arr[index] = temp;
}
}
/**
* 快速排序
*/
public static void quick(int[] arr,int left,int right) {
int p = (left + right) / 2;
int temp = arr[p];
int i = left;
int j = right;
for (; i < j;) {
while (i < p && arr[i] < temp) {
i++;
}
if (i < p) {
arr[p] = arr[i];
p = i;
}
while (j > p && arr[j] >= temp) {
j--;
}
if (j > p) {
arr[p] = arr[j];
p = j;
}
}
arr[p] = temp;
if ((p - left) > 1) {
quick(arr, left, p - 1);
}
if ((right - p) > 1) {
quick(arr, p + 1, right);
}
}
本文深入讲解了四种基本的排序算法:冒泡排序、插入排序、选择排序和快速排序。每种算法都通过详细的代码实现进行了解释,帮助读者理解其工作原理和应用场景。

10万+

被折叠的 条评论
为什么被折叠?



