public class AllSort{
public static void main(String[] args) {
int[] nums = {4,6,7,3,5,7,1};
insetSort(nums);
for(int num: nums){
System.out.print(num);
}
}
//冒泡排序
public static void bubbleSort(int[] nums){
for(int i=0;i<nums.length-1;i++){
for(int j=0;j<nums.length-i-1;j++){
if(nums[j]>nums[j+1]){
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
}
//插入排序
public static void insetSort(int[] nums){
for(int i=1;i<nums.length;i++){
int j = i;
while(j>0){
if(nums[j]<nums[j-1]){
swap(nums, j-1, j);
}
j--;
}
}
}
//选择排序
public static void selectSort(int[] nums){
for(int i=0;i<nums.length-1;i++){
int minIndex = i;
for(int j=i+1;j<nums.length;j++){
if(nums[j]<nums[minIndex]){
minIndex = j;
}
}
int temp = nums[i];
nums[i] = nums[minIndex];
nums[minIndex] = temp;
}
}
//快速排序
public static void quickSort(int[] nums){
quick(nums, 0, nums.length-1);
}
public static void quick(int[] nums, int left, int right){
if(left<right){
int i = left;
int j = right;
int temp = nums[i];
while(i<j){
while(i<j && nums[j]>temp)
j--;
nums[i] = nums[j];
while(i<j && nums[i]<temp)
i++;
nums[j] = nums[i];
}
nums[j] = temp;
quick(nums, left, j-1);
quick(nums, j+1, right);
}
}
public static void swap(int[] nums, int i, int j){
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
//希尔排序
public static void shellSort(int[] nums){
for(int gap=nums.length/2;gap>0;gap/=2){
for(int i=gap;i<nums.length;i++){
int j = i;
while(j-gap>=0&&nums[j]<nums[j-gap]){
swap(nums, j, j-gap);
j-=gap;
}
}
}
}
//堆排序
public static void heapSort(int[] nums){
//1、构建大顶堆
for(int i=nums.length/2-1;i>=0;i--){
adjustHeap(nums, i, nums.length);
}
//2、调整堆结构+交换堆顶元素与末尾元素
for(int j=nums.length-1;j>0;j--){
swap(nums, 0, j);//将堆元素与末尾元素进行交换
adjustHeap(nums, 0, j);//重新对堆进行调整
}
}
public static void adjustHeap(int[] nums, int i, int length){
int temp = nums[i];//先取出当前元素i
for(int k=i*2+1;k<length;k=k*2+1){//从i节点的坐子节点开始,也就是2*i+1
if(k+1<length&&nums[k]<nums[k+1]){//如果左子结点小于右子结点,k指向右子结点
k++;
}
if(nums[k]>temp){
nums[i] = nums[k];
i = k;
}else{
break;
}
}
nums[i] = temp;
}
}
排序算法(冒泡、希尔、插入、选择、快速、堆)
最新推荐文章于 2022-03-25 11:32:09 发布