数据结构--排序系列(插入排序,希尔排序,堆排序)Java代码实现
来源:互联网 发布:工程设计软件有哪些 编辑:程序博客网 时间:2024/05/21 19:27
定理二:通过交换相邻元素进行排序的任何算法平均都需要O(N^2)
package paixu;
public class Insert {
public static void main(String[] args) {
int a[]= {9,6,8,4};
insertionSort(a);
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
}
public static void insertionSort(int [] a){
int j;
for(int p=1;p<a.length;p++){
int tmp=a[p];
j=p-1;
while(j>=0&&tmp<a[j]){
a[j+1]=a[j];
j--;
}
a[j+1]=tmp;
}
}
}
希尔排序:
package paixu;
public class Shellsort {
public static void main(String[] args) {
int a[]={3,9,56,4,5,1};
shellSort(a);
for(int o:a)
System.out.println(o);
}
public static void shellSort(int [] arr){
int j;
int len=arr.length;
for(int val=len/2;val>0;val=val/2){
for(int i=val;i<len;i++){
int temp=arr[i];
for(j=i;j>=val&&temp<arr[j-val];j-=val){
arr[j]=arr[j-val];
}
arr[j]=temp;
}
}
}
}
堆排序:
package paixu;
public class heapsort {
public static class ArrayUtils{
public static void printArray(int [] array){
System.out.println("{");
for(int i=0;i<array.length;i++){
System.out.println(array[i]);
if(i<array.length-1){
System.out.println(",");
}
}
System.out.println("}");
}
public static void exchangeElements(int[] array,int index1,int index2){
int temp=array[index1];
array[index1]=array[index2];
array[index2]=temp;
}
}
public static void main(String[] args) {
int [] array={25,23,32,1,14,21,2};
heapSort(array);
for(int arr:array){
System.out.println(arr);
}
}
public static void heapSort(int[] array){
if(array==null||array.length<=1){
return;
}
buildMaxHeap(array);
for(int i=array.length-1;i>=1;i--){
ArrayUtils.exchangeElements(array,0,i);
maxHeap(array,i,0);
}
}
private static void buildMaxHeap(int[] array){
if(array==null||array.length<=1){
return;
}
int half=array.length/2;
for(int i=half;i>=0;i--){
maxHeap(array,array.length,i);
}
}
private static void maxHeap(int[] array,int heapSize,int index){
int left=index*2+1;
int right=index*2+2;
int largest =index;
if(left<heapSize&&array[left]>array[index]){
largest=left;
}
if(right<heapSize&&array[right]>array[largest]){
largest=right;
}
if(index!=largest){
ArrayUtils.exchangeElements(array,index,largest);
maxHeap(array,heapSize,largest);
}
}
}
- 数据结构--排序系列(插入排序,希尔排序,堆排序)Java代码实现
- 冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序java实现
- 算法系列(二)冒泡排序、选择排序、插入排序和希尔排序(Java实现)
- 数据结构与算法从零开始系列:冒泡排序、选择排序、插入排序、希尔排序、堆排序、快速排序
- java实现七种排序 (插入排序, 希尔排序, 插入排序, 快速排序, 简单选择排序, 堆排序, 归并排序)
- Java实现常见排序--希尔排序、快排序、堆排序、归并排序等Java实现代码
- 数据结构-排序算法详解(插入排序,希尔排序,堆排序,归并排序,快速排序,桶式排序)
- 简单排序Java实现(三):希尔排序,堆排序
- java实现排序算法之插入排序(直接插入排序,折半插入排序,希尔排序)
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 【数据结构】-直接插入排序、希尔排序Java实现
- 数据结构-插入排序-希尔排序
- 数据结构-插入排序&希尔排序
- java数据结构之插入排序(直接插入排序、折半插入排序、希尔排序)
- 常见比较排序算法的实现(归并排序、快速排序、堆排序、选择排序、插入排序、希尔排序)
- 插入排序,希尔排序,堆排序
- 插入排序、希尔排序、堆排序
- 数据结构6-排序算法(直接插入排序、希尔排序、快速排序、归并排序和堆排序)
- 【selenium安装】selenium安装教程
- java将unicode码转换为中文
- springboot【24】监控管理之Actuator的/info端点输出Git版本信息
- 机器学习(周志华)读书笔记-(五)神经网络(2)卷积神经网络
- Python中的CSV读写
- 数据结构--排序系列(插入排序,希尔排序,堆排序)Java代码实现
- 在STL中基本容器string、vector、list、deque、set、map之间的区别
- 二叉搜索树
- openstack storlet 文档(七):storlet编写和部署向导
- hdu 6166 Senior Pan (多校第九场)
- 有关测试用例的书写以及重要性
- MVC框架显示层——Velocity技术
- Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
- EXT JS 网格列 隐藏