java数据结构-排序算法-前边算法整合

package com.fu;

import java.util.Arrays;

/** * @auther 付强 * @date 2020/2/13 - 10:27 */public class myArray1 {    //用于存储数据的数组    private int[] elements;    public myArray1(){        elements=new int[0];    }

    //获取数组长度的方法    public int size(){        return elements.length;    }    //往数组的末尾添加一个元素    public void add(int element){        //创建一个新的数组        int[] newArr=new int[elements.length+1];        //把原数组中的元素复制到新的数组中        for (int i = 0; i < elements.length; i++) {            newArr[i]=elements[i];        }        //把添加的元素放入新数组中的        newArr[elements.length]=element;        //使用新数组替换就数组        elements=newArr;    }    public void add(int index,int element){        //创建一个新的数组        int[] newArr=new int[elements.length+1];        //把原数组中的元素素质到新的数组中        for (int i = 0; i < elements.length; i++) {            if(i<index){                newArr[i]=elements[i];

            }else{                newArr[i+1]=elements[i];            }

        }        newArr[index]=element;        elements=newArr;    }    //打印所有元素到控制台    public void show(){        System.out.println(Arrays.toString(elements));    }    //删除数组中的元素    public void delect(int index){        if(index<0||index>elements.length-1){            throw new RuntimeException("下标越界");        }        //创建一个新数组        int newArr[]=new int[elements.length-1];        //把原先数组中的元素替换到新的数组中        for (int i = 0; i < elements.length; i++) {            if(i<index){                newArr[i]=elements[i];            }            else{                newArr[i]=elements[i+1];            }        }        elements=newArr;    }    //线性查找    public int search(int target){        for (int i = 0; i < elements.length; i++) {            if(elements[i]==target){                return i;            }        }        return -1;    }    //二分法查找    public int binarySearch(int target){        //设置一个中位数        //定义最小值        int min=0;        //定义最大值        int max=elements.length-1;        //索引        int index=-1;        //什么情况下没有这个元素        //如果开始位置在结束位置之后或重合        if(min>=max){            return -1;        }        int mid=(max+min)/2;        while(true){            if(elements[mid]==target){                return mid;            }            else{                    if (elements[mid] > target) {                        max = mid - 1;                    } else{                        min = mid + 1;                    }                    //取出中间的值                    mid = (min + max) / 2;                }            }        }

}

原文地址:https://www.cnblogs.com/fuqiang-java/p/12303089.html

时间: 2024-10-03 03:58:59

java数据结构-排序算法-前边算法整合的相关文章

java数据结构-排序算法-基数算法

package com.kuang; import java.util.Arrays; /** * @auther 付强 * @date 2020/2/15 - 10:46 */public class RadixSort { public static void main(String[] args) { int[] arr=new int[]{23,6,189,45,9,289,56,1,789,32,65,652,5}; radixSort(arr); System.out.println

Java数据结构 最短路径解法Dijkstra算法

本文为博主原创文章,未经博主允许不得转载! 1.1.定义概览Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等.注意该算法要求图中不存在负权边. 问题描述:在无向图 G=(V,E) 中,假设每条边 E[i] 的长度为 w[i],找到由顶点 V0 到其余各点的最短路径.(

Java数据结构和算法之数组与简单排序

一.数组于简单排序 数组 数组(array)是相同类型变量的集合,可以使用共同的名字引用它.数组可被定义为任何类型,可以是一维或多维.数组中的一个特别要素是通过下标来访问它.数组提供了一种将有联系的信息分组的便利方法. 一维数组 一维数组(one‐dimensional array )实质上是相同类型变量列表.要创建一个数组,你必须首先定义数组变量所需的类型.通用的一维数组的声明格式是: type var‐name[ ]; 获得一个数组需要2步: 第一步,你必须定义变量所需的类型. 第二步,你必

Java数据结构 遍历 排序 查找 算法实现

1. 遍历算法(遍历二叉树6种方法) 1.1. 概述 遍历算法针对二叉树而言的,主要有先序.中序.后序三种遍历顺序,三种顺序又分别有递归和常规算法,二叉树遍历的主要思想是:遍历左子树,遍历右子树,访问根节点,由这三者的遍历顺序来确定是先序.中序还是后序.下面只要求掌握递归遍历算法,常规遍历算法见附录一. 1.2. 先序遍历算法 遍历顺序:访问根节点,遍历左子树,遍历右子树.代码如下: void preOrder(BinaryTreeNode bt) { if (bt == null)// 如果当

Java数据结构与算法之排序

排序从大体上来讲,做了两件事情: 1.比较两个数据项: 2.交换两个数据项,或复制其中一项 一.冒泡排序 大O表示法:交换次数和比较次数都为O(N*N). 算法原理: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 3.针对所有的元素重复以上的步骤,除了最后一个. 4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较. /** * 冒泡排序 demo * */

数据结构排序算法Java实现

闲的无聊又拿起了大学的数据结构的书看起来 <数据结构(c语言版)>严蔚敏 吴伟民编著. 里面有几个排序算法,感觉挺好玩的,就想着写出来玩玩. package test.sort; /** * @Title: TODO * @Description: TODO * @author: * @date: 2014-8-10 上午11:20:43 * */ public class quickSort { private static int datas[] = {23,42,12,45,56,63,

Java数据结构和算法(九)——高级排序

春晚好看吗?不存在的!!! 在Java数据结构和算法(三)——冒泡.选择.插入排序算法中我们介绍了三种简单的排序算法,它们的时间复杂度大O表示法都是O(N2),如果数据量少,我们还能忍受,但是数据量大,那么这三种简单的排序所需要的时间则是我们所不能接受的.接着我们在讲解递归 的时候,介绍了归并排序,归并排序需要O(NlogN),这比简单排序要快了很多,但是归并排序有个缺点,它需要的空间是原始数组空间的两倍,当我们需要排序的数据占据了整个内存的一半以上的空间,那么是不能使用归并排序的. 本篇博客将

Java数据结构与算法(第七章高级排序1)

希尔排序 希尔排序是计算机科学家Donald L.Shell 而得名,他在1959年发现了希尔排序算法.希尔排序基于插入排序,但是增加了一个新的特性,大大提高了插入排序的执行效率. 插入排序:复制的次数太多 由于希尔排序是基于插入排序的,所以需要回顾下"插入排除".在插入排除执行的一半的时候,标记符左边这部分数据项都是排过序的(这些数据之间是有序的),而记右边的数据项没有排过序.这个算法取出标记符所指的数据项,把它存储在一个临时的变量.接着,从刚刚被移除的数据项的左边第一个单元看是,每

Java数据结构和算法 - 高级排序

希尔排序 Q: 什么是希尔排序? A: 希尔排序因计算机科学家Donald L.Shell而得名,他在1959年发现了希尔排序算法. A: 希尔排序基于插入排序,但是增加了一个新的特性,大大地提高了插入排序的执行效率. Q: 回忆之前的插入排序,有哪些缺点? A: 回忆之前的简单排序的“插入排序”一节,在插入排序执行一半的时候,标记位i左边这部分数据项都是排过序的,而标记位右边的数据项则没有排过序.这个算法取出标记位所指的数据项,把它存储在一个临时变量里,接着,从刚刚被移除的数据项的左边第一个元