zoukankan      html  css  js  c++  java
  • 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;
    }
    }
    }

    }
  • 相关阅读:
    C# 排序技术研究与对比
    基于.net的通用内存缓存模型组件
    Scala学习笔记:重要语法特性
    一个初学者的指南,使用D3做数据绑定
    CLR垃圾回收的设计
    CLR线程概览(下)
    CLR线程概览(一)
    使用sos查看.NET对象内存布局
    .NET对象的内存布局
    MYC编译器源码之代码生成
  • 原文地址:https://www.cnblogs.com/fuqiang-java/p/12303089.html
Copyright © 2011-2022 走看看