zoukankan      html  css  js  c++  java
  • 学习java数据结构和算法笔记(一)

    package com.example.demo;
    
    
    /**
     * 
     * <P>Description: 排序</P>
     * @ClassName: List
     * @author 冯浩  2018年4月19日 下午3:16:39
     * @see TODO
     */
    public class List {
        
        private volatile int size;
        
        private Long[] array= {};
        
        public List(int max) {
            array=new Long[max];
            size=0;
        }
        
        public int find(Long key) {
            int up=size-1;
            int low=0;
            int model;
            while(true) {
                model=(up+low)/2;
                if(array[model]==key) {
                    return model;
                }else if(low>up) {
                    return size;
                }else {
                   if(array[model]>key) {
                       up=model-1;
                   }else {
                       low=model+1;
                   }    
                }
                
            }
            
        }
        public void insert(Long value) {
            int i;
            for ( i = 0; i < size; i++) {
                if(array[i]>value) {
                    break;
                }
            }
            for(int j=size;j>i;j--) {
                array[j]=array[j-1];
            }
            array[i]=value;
            size++;
        }
        public boolean delete(Long key) {
            int find = find(key);
            if(find==size) {
                return false;
            }
            for (int i = find; i < size; i++) {
                array[i]=array[i+1];
            }
            size--;
            return true;
            
        }
        
        
        /**
         * 
         * <p>Title: dubboSort</p>
         * <p>Description: 冒泡排序</p>
         * 2,1,3,4,7,8,1
         * 每次循环之后,本地循环最后一个值到数组的最后一个值是有序的
         * @return
         * @author 冯浩  2018年4月19日 下午3:29:01
         */
        public Long[] dubboSort() {
            for(int i=size-1;i<size;i--) {
                for(int j=0;j<i;j++) {
                    if(array[j]>array[j+1]) {
                        long tem=array[j];
                        array[j]=array[j+1];
                        array[j+1]=tem;
                    }
                }
            }
            return array;
        }
        
        /**
         * 
         * <p>Title: choseSort</p>
         * <p>Description: 选择排序</p>
         * 选择排序--需要一个基数,和数组中的其他数据做比较,比较之后,前面的数据是有序数据
         * @return
         * @author 冯浩  2018年4月19日 下午5:02:57
         */
        public Long[] choseSort() {
            int min;
            for (int i = 0; i < size; i++) {
                min=i;
                for (int j = i+1; j <size; j++) {
                    if(array[min]>array[j]) {
                        long tem = array[min];
                        array[min]=array[j];
                        array[j]=tem;
                    }
                }
            }
            return array;
        }
        
        
        public Long[] insertSort() {
            
            for (int i = 1; i < size; i++) {
                long tem=array[i];
                while(i>0 && tem<array[i-1]) {
                    array[i]=array[i-1];
                    --i;
                }
                array[i]=tem;
            }
            return array;
        }
        public static void main(String[] args) {
            List list=new List(10);
            list.insert(1l);
            list.insert(2l);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
            list.insert(3l);
            int find = list.find(2l);
    //        System.out.println(find);
    //        Long[] dubboSort = list.dubboSort();
    //        Long[] dubboSort = list.choseSort();
            Long[] dubboSort = list.insertSort();
            for (Long long1 : dubboSort) {
                if(long1!=null) {
                    System.out.println(long1);
                }
            }
            
        }
    
    }
  • 相关阅读:
    SQL大全基本语法
    ASP.NET实现二维码
    JMeter下载及安装配置完整版
    windows下搭建nginx负载均衡
    C# 接口生成工具Swagger用法
    在IIS上部署网站,应用程序池选择.Net Framework版本为 v4.0.30319后,打开网站报错
    sqlserver 中WITH NOLOCK、HOLDLOCK、UPDLOCK、TABLOCK、TABLOCKX
    C#进阶学习笔记
    C#单例模式的理解
    实现WebService只返还json结构数据
  • 原文地址:https://www.cnblogs.com/nihaofenghao/p/8889283.html
Copyright © 2011-2022 走看看