算法|java排序 冒泡排序,选择排序,插入排序,希尔排序,快速排序

冒泡排序 相邻元素比较,大的向右冒泡

public class Bubble {//相邻元素比较,大的向右冒泡 public static void main(String[] args) { int[] nums={10,38,65,97,76,13}; for (int i = 0; i < nums.length; i++) { for (int j=0; j

选择排序 直接插入
选出固定位置与后面元素逐个比较,交换
for (int i = 0; i < nums.length-1; i++) { for (int j = i+1; j < nums.length; j++) { if (nums[i]>nums[j]){ int t=nums[i]; nums[i]=nums[j]; nums[j]=t; } } }

优化后无需多次交换,pos直接指向最小值进行交换
for (int i = 0; i < nums.length-1; i++) {//优化后无需多次交换,pos直接指向最小值进行交换 int pos=i; for (int j = i+1; j nums[j]){ pos=j; } } if(i!=pos){ int t=nums[i]; nums[i]=nums[pos]; nums[pos]=t; } }

插入排序 前边有序,后边无序,后边的跟前边的逐个比较,确定位置
for (int i = 1; i < nums.length; i++) { for (int j = i-1; j >=0; j--) { if(nums[j+1]

优化后只需一次交换,在选出元素位置挖出一个坑,前边的元素依次后移,最后把选出元素填入前边的坑
for (int i = 1; i < nums.length; i++) { int temp=nums[i]; int pos=i; for (int j = i-1; j >=0 ; j--) { if (temp

希尔排序 直接插入的优化,通过设置间隔让元素分组进行插入排序
int[] nums={10,38,65,97,76,13,27,49,78,34,12,64,1}; int gap=nums.length; while (gap!=1){ gap/=2; for (int i = 0; i =0 ; k-=gap) { if (temp

快速排序 【算法|java排序 冒泡排序,选择排序,插入排序,希尔排序,快速排序】后边指针先动,相遇时停下
public static void quickSort(int[] arr,int start,int end){ int i=start; int j=end; int p=arr[start]; //取第一个元素作为轴 while (i

    推荐阅读