十大排序算法上(冒泡,选择,插入,快速,希尔)
2022/2/7 14:12:33
本文主要是介绍十大排序算法上(冒泡,选择,插入,快速,希尔),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
冒泡:
public int[] 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; } } } return nums; }
选择:
public int[] 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;//把最小的元素和前边的元素进行交换 } return nums; }
插入:
for (int i=1;i<nums.length;i++){ int j=i; int temp=nums[i]; while (j>0&&nums[j-1]>temp){ nums[j]=nums[j-1]; j--; } nums[j]=temp; } return nums;
快速:
public int[] quickSort(int[] nums,int left,int right){ if (right-left<=7){ insertSort(nums,left,right); return nums; } int pIndex=partition(nums,left,right); quickSort(nums,left,pIndex-1); quickSort(nums,pIndex+1,right); return nums; } private int partition(int[] nums, int left, int right) { Random random=new Random(); int randomIndex=left+random.nextInt(right-left+1); swap(nums,left,randomIndex); int pivot=nums[left]; int lt=left+1; int gt=right; while (true){ while (lt<=right&&nums[lt]<pivot){ lt++; } while (gt>left&&nums[gt]>pivot){ gt--; } if (lt>=gt){ break; } swap(nums,lt,gt); lt++; gt--; } swap(nums,gt,left); return gt; } private void swap(int[] nums, int left, int randomIndex) { int temp=nums[left]; nums[left]=nums[randomIndex]; nums[randomIndex]=temp; } private void insertSort(int[] nums, int left, int right) { for (int i=left+1;i<=right;i++){ int j=i; int temp=nums[i]; while (j>0&&nums[j-1]>temp){ nums[j]=nums[j-1]; j--; } nums[j]=temp; } }
希尔:
public int[] xierSort(int[] nums){ int len=nums.length; int h=1; while (3*h+1<len){ h=3*h+1; } while (h>=1){ for (int i=h;i<len;i++){ int j=i; int temp=nums[i]; while (j>=h&&nums[j-h]>temp){ nums[j]=nums[j-h]; j-=h; } nums[j]=temp; } h/=3; } return nums; }
(68条消息) 十大排序算法详解(一)冒泡排序、选择排序、插入排序、快速排序、希尔排序_HK的博客-CSDN博客https://blog.csdn.net/m0_37741420/article/details/106981276?spm=1001.2014.3001.5502
该博主的写法十分详细,配有动画演示,通俗易懂
这篇关于十大排序算法上(冒泡,选择,插入,快速,希尔)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南