【数组】 - 有序数组设计
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
有序數(shù)組:數(shù)組存儲(chǔ)有序的元素
不足:暫不考慮重復(fù)數(shù)組元素的問(wèn)題
思路:通過(guò)代理模式,代理Java已實(shí)現(xiàn)的數(shù)組對(duì)象,實(shí)現(xiàn)有序數(shù)組的功能
有序數(shù)組結(jié)構(gòu)主體
package com.zhiwei.array;public class OrderArray {private int[] orderArray;private int nElems; //非空元素個(gè)數(shù)private int initSize; //數(shù)組最大容納元素個(gè)數(shù)public OrderArray(int initSize){this.orderArray = new int[initSize];this.nElems = 0;this.initSize = initSize;} }
添加新元素:addElem(int value)
①:數(shù)組已經(jīng)初始化其內(nèi)存空間是不能發(fā)生改變的,因此數(shù)組添加新元素的時(shí)候需要考慮數(shù)組的存儲(chǔ)空間是否有限的問(wèn)題 ②:新元素有序插入:確定新元素位置--> 原數(shù)組受影響元素向后移動(dòng)1位--> 存放新元素 ③:更新數(shù)組的屬性信息:非空元素個(gè)數(shù)等
public boolean addElem(int value){if(nElems>=initSize){ return false;}int index = 0; for(int i=0;i<nElems;i++){if (value < orderArray[i]){index = i; break;}}//最后一個(gè)非空元素開始后移1位for(int j=nElems-1;j>=index;j--){orderArray[j+1] = orderArray[j];}orderArray[index] = value;nElems++;return true;}刪除元素:delElem(int value)
更新元素:updateElem(int index,int value)
冒泡排序法
思想:每次排序都將最大或者最小的元素篩選出來(lái)放在最后,然后一次對(duì)剩下的元素進(jìn)行最值篩選,最后形成有序的序列 sortArray()方法:
public void sortArray(){for(int i=0;i<nElems;i++){for(int j=0;j<nElems-i-1;j++){if(orderArray[j]>orderArray[j+1]){int temp = orderArray[j];orderArray[j] = orderArray[j+1];orderArray[j+1] = temp;}}}}數(shù)組遍歷展示:show()
public void show(){StringBuffer sb = new StringBuffer();sb.append("數(shù)組元素:[");for(int i=0;i<nElems;i++){sb.append(orderArray[i]+",");}sb.deleteCharAt(sb.length()-1).append("]");System.out.println(sb);}返回?cái)?shù)組長(zhǎng)度:length()
public int length(){return nElems;}
測(cè)試代碼
OrderArray orderArray = new OrderArray(10); orderArray.addElem(10);orderArray.addElem(8);orderArray.addElem(9);orderArray.addElem(5);orderArray.addElem(8);orderArray.addElem(7);orderArray.show();orderArray.delElem(11);orderArray.show();orderArray.delElem(8);orderArray.delElem(9);orderArray.show();orderArray.updateElem(3,6);orderArray.show();System.out.println(orderArray.length());
結(jié)果:
補(bǔ)充說(shuō)明:
因?yàn)槭怯行驍?shù)組,通過(guò)addElem()方法添加新元素時(shí),元素自動(dòng)排序插入,因此插入元素順序和數(shù)組存儲(chǔ)的元素下標(biāo)順序并沒(méi)有絕對(duì)的對(duì)應(yīng)的關(guān)系,因此未提供正對(duì)索引的賦值或取值的操作方法
轉(zhuǎn)載于:https://my.oschina.net/yangzhiwei256/blog/3008636
總結(jié)
以上是生活随笔為你收集整理的【数组】 - 有序数组设计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: 解决Nginx+Tomcat下客户端ht
- 下一篇: python之从文件中按行读取数据
