十大排序算法上(冒泡,选择,插入,快速,希尔)
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-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行