一遍记住Java常用的八种排序算法与代码实现
2020-12-24 00:27
标签:int start 算法 交换排序 数据 wap break gem 五个 private 经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中。 将第一个数和第二个数排序,然后构成一个有序序列 将第三个数插入进去,构成一个新的有序序列。 如何写写成代码: 首先设定插入次数,即循环次数,for(int i=1;i 设定插入数和得到已经排好序列的最后一个数的位数。insertNum 和 j=i-1。 从最后一个数开始向前循环,如果插入数小于当前数,就将当前数向后移动一位。 代码实现如下: 对于直接插入排序问题,数据量巨大时。 将数的个数设为 n,取奇数 k=n/2,将下标差值为 k 的数分为一组,构成有序序列。 再取 k=k/2 ,将下标差值为 k 的书分为一组,构成有序序列。 如何写成代码: 首先确定分的组数。 然后对组中元素进行插入排序。 代码实现如下: 常用于取序列中最大最小的几个数时。 (如果每次比较都交换,那么就是交换排序;如果每次比较完一个循环再交换,就是简单选择排序。) 遍历整个序列,将最小的数放在最前面。 遍历剩下的序列,将最小的数放在最前面。 如何写成代码: 首先确定循环次数,并且记住当前数字和当前位置。 将当前位置后面所有的数与当前数字进行对比,小数赋值给 key,并记住小数的位置。 比对完成后,将最小的值与第一个数的值交换。 代码实现如下: 对简单选择排序的优化。 将序列构建成大顶堆。 将根节点与最后一个节点交换,然后断开最后一个节点。 代码实现如下: 一般不用。 将序列中所有元素两两比较,将最大的放在最后面。 将剩余序列中所有元素两两比较,将最大的放在最后面。 如何写成代码: 设置循环次数。 设置开始比较的位数,和结束的位数。 两两比较,将最小的放到前面去。 代码实现如下: 要求时间最快时。 选择第一个数为 p,小于 p 的数放在左边,大于 p 的数放在右边。 代码实现如下: 速度仅次于快排,内存少的时候使用,可以进行并行计算的时候使用。 选择相邻两个数组成一个有序序列。 选择相邻的两个有序序列组成一个有序序列。 代码实现如下: 用于大量数,很长的数进行排序时。 将所有的数的个位数取出,按照个位数进行排序,构成一个序列。 代码实现如下: 最后,祝大家技术在沉淀中升华。 欢迎大家关注我的公众号【风平浪静如码】,海量Java相关文章,学习资料都会在里面更新,整理的资料也会放在里面。 觉得写的还不错的就点个赞,加个关注呗!点关注,不迷路,持续更新!!! 一遍记住Java常用的八种排序算法与代码实现 标签:int start 算法 交换排序 数据 wap break gem 五个 private 原文地址:https://blog.51cto.com/14570694/2507492
public void insertSort(int[] a){
int length=a.length;
int insertNum;
for(int i=1;i
二、希尔排序
public void sheelSort(int[] a){
int d = a.length;
while (d!=0) {
d=d/2;
for (int x = 0; x = 0 && temp
三、简单选择排序
public void selectSort(int[] a) {
int length = a.length;
for (int i = 0; i
四、堆排序
public void heapSort(int[] a){
System.out.println("开始排序");
int arrayLength=a.length;
for(int i=0;i=0;i--){
int k=i;
while(k*2+1
五、冒泡排序
public void bubbleSort(int[] a){
int length=a.length;
int temp;
for(int i=0;i
六、快速排序
public static void quickSort(int[] numbers, int start, int end) {
if (start base) && (j > start))
j--;
if (i i)
quickSort(numbers, i, end);
}
}
七、归并排序
public static void mergeSort(int[] numbers, int left, int right) {
int t = 1;
int size = right - left + 1;
while (t
八、把基数排序
public void sort(int[] array) {
int max = array[0];
for (int i = 1; i max) {
max = array[i];
}
}
int time = 0;
while (max > 0) {
max /= 10;
time++;
}
List queue = new ArrayList();
for (int i = 0; i queue1 = new ArrayList
写在最后:
上一篇:JavaScript
下一篇:融入python-6-赋值
文章标题:一遍记住Java常用的八种排序算法与代码实现
文章链接:http://soscw.com/index.php/essay/37795.html