冒泡法排序
默认以下排序皆为升序
//冒泡排序
public class BubbleSort {
public static void main(String args[]) {
int a[] = {5,3,1,2,4,6,8,9,7,10};
bubblesort(a);
}
public static void bubblesort(int arr[]) {
for(int i=1;i<arr.length;i++) {
for(int j=0;j<arr.length;j++) {
if(arr[i]<arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for(int n : arr) {
System.out.print(n+" ");
}
}
}
最基本的自己理解!
插入排序
public class InsertSort {
public static void main(String args[]) {
int a[] = {5,3,1,2,4,6,8,9,7,10};
insertsort(a);
}
public static void insertsort(int arr[]) {
if(arr==null || arr.length<2) {
System.out.println("数组为空或者长度为一");
}
for(int i = 1;i<arr.length;i++) {
for(int j = i;j > 0;j--) {
if(arr[j]<arr[j-1]) {
int temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
}
for(int n:arr) {
System.out.print(n+" ");
}
}
}
从数组的第二项开始,令i=1 j=i 对比arr[j]与arr[j-1]中元素的大小,
如果 arr[1]<arr[0] 则将两者位置内的元素调换;
j自减,j<=0跳出循环;i++;
i=2 j=i;继续对比以上两项;
循环直至i>=arrlength结束;
选择排序
public class SelectSort {
public static void main(String args[]) {
int a[] = {5,3,1,2,4,6,8,9,7,10};
selectsort(a);
print(a);
}
public static void selectsort(int arr[]) {
for(int i=0;i<arr.length-1;i++) {
int min = i;
//使用一个for循环找出数组中最小的数
for(int j=i+1;j<arr.length;j++) {
if(arr[min]>arr[j]) {
min=j;
}
}
//如果当前i位置不是最小数则将i位置元素与min位置元素调换
if(min!=i) {
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
//调换后i++从下一个位置循环再次找最小数
}
}
public static void print(int arr[]) {
for(int i:arr) {
System.out.print(i+" ");
}
}
}
第一次循环后最小数在数组的0索引处,第二次在1索引处,以此类推;
快速排序
public class QuickSort {
/*
* 快速排序
* 确定一个轴一般以数组第一个元素
* 先从后往前找arr[j]<pivot的元素(升序)a[j]与a[i]调换
* 后从前往后找arr[i]>pivot的元素a[j]与a[i]调换
* 重复以上步骤直至i=j时跳出循环
* 在使用递归对前半段和后半段执行以上顺序
* 以下为降序的快速排列
*/
public static void main(String args[]) {
int a[] = {5,3,1,2,4,6,8,9,7,10};
int len=a.length-1;
qsort(a, 0, len);
System.out.print("快速排序(降序)后结果为:");
print(a);
}
//参数为:数组,头元素位置,尾元素位置(一般为arr.length-1)
public static void qsort(int arr[],int start,int end) {
int pivot = arr[start];
int i = start;
int j = end;
while(i<j) {
while(arr[j]<pivot) {
j--;
}
while(arr[i]>pivot) {
i++;
}
if(arr[i]==arr[j]) {
i++;
}else {
int x = arr[i];
arr[i] = arr[j];
arr[j] = x;
}
}
if(i-1>start)
qsort(arr, start, i-1);
if(j+1<end)
qsort(arr, j+1, end);
}
public static void print(int arr[]) {
for(int i :arr) {
System.out.print(i+" ");
}
}
}