冒泡排序:
package com.example.interview.leecode.codel;
import java.util.Arrays;
public class CodeL003 {
//冒泡排序
public static void main(String[] args) {
int[] tests = {12, 434, 234, 32324, 3};
System.out.println(Arrays.toString(new CodeL003().array(tests)));
}
//若逻辑就是第一层和第二层对比,然后就是找出一个最大的
public int[] array(int[] arr) {
//这是找出一个最大值
for (int i = 0; i < arr.length - 1; i++) {
//这是对比所有的数据
for (int i1 = 0; i1 < arr.length - 1 - i; i1++) {
if (arr[i1] > arr[i1 + 1]) {
int i2 = arr[i1];
arr[i1] = arr[i1 + 1];
arr[i1 + 1] = i2;
}
}
}
return arr;
}
}
简单排序:
public static void sort(int[] a) {
for (int i = 0; i < a.length; i++) {
int min = i;
//选出之后待排序中值最小的位置
for (int j = i + 1; j < a.length; j++) {
if (a[j] < a[min]) {
min = j;
}
}
//最小值不等于当前值时进行交换
if (min != i) {
int temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}
}
使用递归的快速排序:
public static void sort(int[] a, int low, int high) {
//已经排完
if (low >= high) {
return;
}
int left = low;
int right = high;
//保存基准值
int pivot = a[left];
while (left < right) {
//从后向前找到比基准小的元素
while (left < right && a[right] >= pivot)
right--;
a[left] = a[right];
//从前往后找到比基准大的元素
while (left < right && a[left] <= pivot)
left++;
a[right] = a[left];
}
// 放置基准值,准备分治递归快排
a[left] = pivot;
sort(a, low, left - 1);
sort(a, left + 1, high);
}