public static void radixsort(int[] a){
int max=a[0];
for(int i=1;i<a.length;i++){
if (max<a[i]) {
max=a[i];
}
}
int time=0;
while(max>0){
max/=10;
time++;
}
java.util.List<ArrayList> queue=new ArrayList<ArrayList>();
for(int i=0;i<10;i++){
ArrayList<Integer> queue1=new ArrayList<>();
queue.add(queue1);
}
for(int i=0;i<time;i++){
for(int j=0;j<a.length;j++){
int x=a[j]%(int)Math.pow(10, i+1)/(int)Math.pow(10, i);
queue.get(x).add(a[j]);
}
int tmp=0;
for(int j=0;j<10;j++){
while(!queue.get(j).isEmpty()){
a[tmp++]=(int)queue.get(j).remove(0);
}
}
} for (int i = 0; i < a.length; i++) {
System.out.println("radixsort" + a[i]);
}
} public static void mergesort(int[] a) {
sort(a, 0, a.length-1);
for (int i = 0; i < a.length; i++) {
System.out.println("mergesort" + a[i]);
}
} public static void merging(int[] a, int left, int middle, int right) {
if (middle < left || middle > right) {
return;
}
int[] tmpArray = new int[a.length];
int tmp = left;
int tmpIndex = left;
int begin1 = left;
int begin2 = middle+1;
while (begin1 <= middle && begin2 <= right) {
if (a[begin1] < a[begin2]) {
tmpArray[tmp++] = a[begin1++];
} else {
tmpArray[tmp++] = a[begin2++];
}
}
while (begin1 <= middle) {
tmpArray[tmp++] = a[begin1++];
}
while (begin2 <= right) {
tmpArray[tmp++] = a[begin2++];
}
while(tmpIndex<=right){
a[tmpIndex]=tmpArray[tmpIndex++];
}
} public static void sort(int[] a, int left, int right) {
if (left < right) {
int middle = (right - left) / 2 + left;
sort(a, left, middle);
sort(a, middle + 1, right);
merging(a, left, middle, right);
}
} public static void quicksort(int[] a) {
System.out.println("quicksort");
quick(a, 0, a.length - 1);
for (int i = 0; i < a.length; i++) {
System.out.println("quicksort" + a[i]);
}
} public static void quick(int[] a, int left, int right) {
if (left < right) {
int middle = getMiddle(a, left, right);
quick(a, left, middle);
quick(a, middle + 1, right);
}
} public static int getMiddle(int[] a, int left, int right) {
int tmp = a[left];
while (left < right) {
while (a[right] >= tmp && right > left) {
right--;
}
a[left] = a[right];
while (a[left] <= tmp && left < right) {
left++;
}
a[right] = a[left];
}
a[left] = tmp;
return left;
} public static void bubblesort(int[] a) {
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length - i - 1; j++) {
if (a[j] > a[j + 1]) {
swap(a, j, j + 1);
}
}
}
for (int i = 0; i < a.length; i++) {
System.out.println("bubblesort" + a[i]);
}
} public static void heapsort(int[] a) {
for (int i = a.length - 1; i >= 0; i--) {
buildmaxheap(a, i);
swap(a, i, 0); }
for (int i = 0; i < a.length; i++) {
System.out.println("heapsort" + a[i]);
}
} public static void swap(int[] a, int i, int j) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
} public static void buildmaxheap(int[] a, int lastindex) {
int length = a.length;
if (lastindex >= length) {
return;
}
int index = (lastindex - 1) / 2;
for (; index >= 0; index--) {
int left = index * 2 + 1;
if (left <= lastindex) {
if (a[index] < a[left]) {
swap(a, index, left);
}
}
if (left < lastindex && a[index] < a[left + 1]) {
swap(a, index, left + 1);
}
}
} public static void selectsort(int[] a) {
int pos = 0;
for (int i = 0; i < a.length; i++) {
pos = i;
for (int j = i + 1; j < a.length; j++) {
if (a[pos] > a[j]) {
pos = j;
}
}
if (pos != i) {
int temp = a[i];
a[i] = a[pos];
a[pos] = temp;
}
}
for (int i = 0; i < a.length; i++) {
System.out.println("shellsort" + a[i]);
}
} public static void shellsort(int[] a) {
int length = a.length;
System.out.println(length);
for (int d = (int) Math.ceil(length / 2); d > 0; d /= 2) {
for (int i = 0; i < d; i++) {
System.out.println("i=" + i + " d=" + d);
for (int j = i + d; j < length; j += d) {
int temp = a[j];
int k = j - d;
System.out.println("j=" + j + " temp=" + temp + " k=" + k);
for (; k >= 0 && temp < a[k]; k -= d) {
System.out.println("k+d=" + (k + d) + " k=" + k + " a[k+d]=" + a[k + d] + " a[k]=" + a[k]);
a[k + d] = a[k];
}
System.out.println("end" + "k+d=" + (k + d) + " a[k+d]=" + a[k + d] + " temp=" + temp);
a[k + d] = temp;
}
}
}
for (int i = 0; i < a.length; i++) {
System.out.println("shellsort" + a[i]);
}
} public static void selectSort(int[] a) {
int length = a.length;
int position = 0;
for (int i = 0; i < length - 1; i++) {
int temp = a[i];
int j = i + 1;
position = i;
for (; j < length; j++) {
if (a[j] < temp) {
temp = a[j];
position = j;
}
}
a[position] = a[i];
a[i] = temp;
}
for (int i = 0; i < a.length; i++) {
System.out.println("selectSort" + a[i]);
}
} public static void insertSort(int[] a) {
int temp = 0;
for (int i = 1; i < a.length; i++) {
int j = i - 1;
temp = a[j + 1];
for (; j >= 0 && a[j] > temp; j--) {
System.out.println(j);
a[j + 1] = a[j];
}
System.out.println(j);
a[j + 1] = temp;
}
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}

8个排序算法——java的更多相关文章

  1. 八大排序算法Java

    目录(?)[-] 概述 插入排序直接插入排序Straight Insertion Sort 插入排序希尔排序Shells Sort 选择排序简单选择排序Simple Selection Sort 选择 ...

  2. 八大排序算法Java实现

    本文对常见的排序算法进行了总结. 常见排序算法如下: 直接插入排序 希尔排序 简单选择排序 堆排序 冒泡排序 快速排序 归并排序 基数排序 它们都属于内部排序,也就是只考虑数据量较小仅需要使用内存的排 ...

  3. 排序算法(Java实现)

    这几天一直在看严蔚敏老师的那本<数据结构>那本书.之前第一次学懵懵逼逼,当再次看的时候,发觉写的是非常详细,非常的好. 那就把相关的排序算法用我熟悉的Java语言记录下来了.以下排序算法是 ...

  4. 6种基础排序算法java源码+图文解析[面试宝典]

    一.概述 作为一个合格的程序员,算法是必备技能,特此总结6大基础算法.java版强烈推荐<算法第四版>非常适合入手,所有算法网上可以找到源码下载. PS:本文讲解算法分三步:1.思想2.图 ...

  5. 排序算法Java版,以及各自的复杂度,以及由堆排序产生的top K问题

    常用的排序算法包括: 冒泡排序:每次在无序队列里将相邻两个数依次进行比较,将小数调换到前面, 逐次比较,直至将最大的数移到最后.最将剩下的N-1个数继续比较,将次大数移至倒数第二.依此规律,直至比较结 ...

  6. 九大排序算法Java实现

    之前学习数据结构与算法时花了三天时间整理九大排序算法,并采用Java语言来实现,今天第一次写博客,刚好可以把这些东西从总结的文档中拿出来与大家分享一下,同时作为自己以后的备忘录. 1.排序算法时间复杂 ...

  7. 排序系列 之 希尔排序算法 —— Java实现

    基本思想: 希尔排序的实质就是分组插入排序,又称缩小增量法. 将整个无序序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本 ...

  8. 十大基础排序算法[java源码+动静双图解析+性能分析]

    一.概述 作为一个合格的程序员,算法是必备技能,特此总结十大基础排序算法.java版源码实现,强烈推荐<算法第四版>非常适合入手,所有算法网上可以找到源码下载. PS:本文讲解算法分三步: ...

  9. 排序算法Java代码实现(一)—— 选择排序

    以下几篇随笔都是记录的我实现八大排序的代码,主要是贴出代码吧,讲解什么的都没有,主要是为了方便我自己复习,哈哈,如果看不明白,也不要说我坑哦! 本片分为两部分代码: 常用方法封装 排序算法里需要频繁使 ...

  10. 【排序算法】希尔排序算法 Java实现

    希尔排序算法是按其设计者希尔(Donald Shell)的名字命名,该算法由1959年公布,是插入排序的一种更高效的改进版本. 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎 ...

随机推荐

  1. ASP.NET Core官方计划路线及需要废除的一些Framework技术

    概述 下面是 ASP.NET Core的时间表和路线图. 注意日期和特性都可能更改. 作为.NET Core这么大的一个项目,很难准确预测每一个计划的是否有变动. 即便如此,我们还是计划公开和透明的实 ...

  2. Python 正则表达式入门(初级篇)

    Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写. 转载请写明出处 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达 ...

  3. Spring MVC中文文档翻译发布

    前后经过九个月,我翻译的Spring MVC官方4.2.4版本中文文档可以发布第一个较为完整的版本了.译文上尽量做到准确并且符合中文习惯,让人能读懂,能理解.现全文发布如下,也希望它能够给出其价值,并 ...

  4. .NET 实现并行的几种方式(二)

    本随笔续接:.NET 实现并行的几种方式(一) 四.Task 3)Task.NET 4.5 中的简易方式 在上篇随笔中,两个Demo使用的是 .NET 4.0 中的方式,代码写起来略显麻烦,这不 .N ...

  5. entityframework学习笔记--008-实体数据建模基础之继承关系映射TPH

    Table per Hierarchy Inheritance 建模 1.让我们假设你有如图8-1中的表,Employee表包含hourly employees 和salaried employees ...

  6. Windows安装RabbitMQ集群的几个注意点

    记录一下RabbitMQ在windows平台下安装的几个注意点- -,好记性不如烂笔头 安装过程与Linux安装一致,教程参照官网集群配置:此处只列举出几个注意点: 1. erlang的版本需要一致, ...

  7. 9.2.4 .net core 通过ViewComponent封装控件

    我们在.net core中还使用了ViewComponent方式生成控件.ViewComponent也是asp.net core的新特性,是对页面部分的渲染,以前PartialView的功能,可以使用 ...

  8. 使用cmd打开java文件,报错:“错误,编码GBK的不可映射字符”

    今天使用EditPlus写了一个小程序,用cmd运行时报错--"错误,编码GBK的不可映射字符". 处理办法是用EditPlus另存为时,把编码格式由UTF-8改为ANSI. 然后 ...

  9. 使用JQuery统计input和textarea文字输入数量代码

    本文主要介绍了jQuery实现统计输入文字个数的方法,需要的朋友可以参考下. HTML部分: <input type="text" value="我是输入的文字&q ...

  10. SharePoint 2013 沙盒解决方案不能激活(激活按钮不可用)

    把沙盒解决方案上传到目标站点的"解决方案"库中,发现"激活"按钮是灰掉的,不可用. 首先,我想到的是权限不足,所以 "以管理员身份"启动IE ...