冒泡排序
public class bubbleSort {
public static void main(String[] args) {
int []dp={9,8,7,6,5,4,3,2,1,0};
bubbleSort(dp);
for (int x:dp) {
System.out.println(x);
}
}
static void bubbleSort(int[] arr)
{
int n=arr.length;
for(int i=0;i<n-1;i++)
{
for (int j =0 ; j <n-i-1 ; j++) {
if(arr[j]>arr[j+1])
{
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
}
选择排序
public class selectSort {
public static void main(String[] args) {
int []dp={9,8,7,6,5,4,3,2,1,0};
selectSort(dp);
for (int x:dp) {
System.out.println(x);
}
}
static void selectSort(int []arr)
{
int n=arr.length;
for (int i = 0; i < n; i++) {
int k=i;
for (int j = i+1; j <n ; j++) {
if(arr[k]>arr[j])
{
k=j;
}
}
if(i!=k)swap(arr, i, k);
}
}
public static void swap(int[] A, int i, int j) {
if (i != j) {
A[i] ^= A[j];
A[j] ^= A[i];
A[i] ^= A[j];
}
}
}
归并排序
import java.util.Arrays;
import java.util.List;
public class mergeSort {
public static void main(String[] args) {
int []dp={9,8,7,6,5,4,3,2,1,0};
mergeSort(0,9,dp);
for (int x:dp) {
System.out.println(x);
}
}
public static void mergeSort(int left,int right,int []ars){
if(left<right)
{
int mid=left+(right-left)>>1;
mergeSort(left, mid, ars);
mergeSort(mid+1, right, ars);
merge(left, right, mid, ars);
}
}
static void merge(int left,int right,int mid,int []a)
{
int length=right-left+1;
int []temp=new int[length];
int tmpIndex=0;
int l=left,r=mid+1;
while(l <= mid && r <= right)
{
if(a[l]<=a[r])
{
temp[tmpIndex++]=a[l++];
}else {
temp[tmpIndex++]=a[r++];
}
}
while (l<=mid)temp[tmpIndex++]=a[l++];
while (r<=right)temp[tmpIndex++]=a[r++];
tmpIndex=0;
while (tmpIndex<length)
{
a[left+tmpIndex]=temp[tmpIndex];
tmpIndex++;
}
}
}
快速排序
import java.util.HashMap;
import java.util.Map;
public class quickSort {
public static void main(String[] args) {
int []dp={9,8,7,6,5,4,3,2,1,0};
quickSort2(0,9,dp);
for (int x:dp) {
System.out.println(x);
}
}
private static void quickSort(int[] array, int start,int end) {
if (start <end) {
int key = array[start];
int i = start;
for (int j = start + 1; j <= end; j++) {
if (key > array[j]) {
swap(array, j, ++i);
}
}
array[start] = array[i];
array[i] = key;
quickSort(array, start, i - 1);
quickSort(array, i + 1, end);
}
}
public static void swap(int[] A, int i, int j) {
if (i != j) {
A[i] ^= A[j];
A[j] ^= A[i];
A[i] ^= A[j];
}
}
static void quickSort2(int left,int right,int arr[])
{
if(left>=right)return;
int i=left,j=right;
int temp=arr[left];
while(i!=j)
{
while(arr[j]>=temp&&i<j)j--;
if(i<j)arr[i++]=arr[j];
while(arr[i]<=temp&&i<j)i++;
if(i<j)arr[j--]=arr[i];
}
arr[i]=temp;
quickSort2(left, i-1, arr);
quickSort2(i+1, right, arr);
}
}
堆排序(大根)
public class headSort {
public static void main(String[] args) {
int []a={3,6,8,5,7};
heapSort(a);
for (int x:a) {
System.out.print(x+" ");
}
}
public static void heapSort(int[] arr) {
heapInsert(arr);
int size = arr.length;
while (size > 1) {
swap(arr, 0, size - 1);
size--;
heapify(arr, 0, size);
}
}
public static void heapInsert(int[] arr) {
for (int i = 0; i < arr.length; i++) {
int currentIndex = i;
int fatherIndex = (currentIndex - 1) / 2;
while (arr[currentIndex] > arr[fatherIndex]) {
swap(arr, currentIndex, fatherIndex);
currentIndex = fatherIndex;
fatherIndex = (currentIndex - 1) / 2;
}
}
}
public static void heapify(int[] arr, int index, int size) {
int left = 2 * index + 1;
int right = 2 * index + 2;
while (left < size) {
int largestIndex;
if (arr[left] < arr[right] && right < size) {
largestIndex = right;
} else {
largestIndex = left;
}
if (arr[index] > arr[largestIndex]) {
largestIndex = index;
}
if (index == largestIndex) {
break;
}
swap(arr, largestIndex, index);
index = largestIndex;
left = 2 * index + 1;
right = 2 * index + 2;
}
}
public static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}