數組簡單操作
package com.datastructure.array;
public class Example1 {
private long[] arr;
//有效數據的多少 長度
private int elements;//初始化爲0
public Example1(){
arr = new long[50];
}
public Example1(int maxsize){
arr = new long[maxsize];
}
/**
* 無序添加數據
*/
public void insert(long value){
arr[elements] = value;
elements++;
}
/**
* 有序添加數據
*/
public void insertorder(long value){
int i;
for(i = 0;i<elements;i++){
if(arr[i]>value){
break;
}
}
for(int j=elements;j>i;j--){
arr[j] = arr[j-1];
}
arr[i] = value;
elements++;
}
/**
* 顯示數據
*/
public void display(){
System.out.print("[");
for(int i=0;i<elements;i++){
if(i == (elements-1)){
System.out.print(arr[i]);
}else{
System.out.print(arr[i]+",");
}
}
System.out.print("]");
}
/**
* 屬於線性查找
* 根據值查找數據返回索引
*/
public int search(long value){
int i;
for(i=0;i<elements;i++){
if(value == arr[i]){
break;
}
}
if(i == elements){
return -1;
}else{
return i;
}
}
/**
* 二分法查找 前提,需要數組是有序,從中間分割
* 根據值查找數據返回索引
* -------------------------------------------------------------------
* | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
* -------------------------------------------------------------------
*/
public int getindex(long value){
int middle = 0;//中間值
int low = 0;//起始位置
int pow = elements;//最後位置
while(true){
middle = (pow + low) / 2;
if(arr[middle] == value){
return middle;
}else if(low > pow){
return -1;
}else{
if(arr[middle] > value){
pow = middle - 1;
}else{
low = middle + 1;
}
}
}
}
/**
* 根據索引查找
*/
public long get(int index){
if(index>=elements || index<0){
throw new ArrayIndexOutOfBoundsException();
}else{
return arr[index];
}
}
/**
* 刪除數據
*/
public void delete(int index){
if(index>=elements || index<0){
throw new ArrayIndexOutOfBoundsException();
}else{
for(int i=index;i<elements;i++){
arr[i] = arr[i+1];
}
elements--;
}
}
/**
* 更新數據
* @param index 索引
* @param value 更新後的值
*/
public void update(int index,long value){
if(index>=elements || index<0){
throw new ArrayIndexOutOfBoundsException();
}else{
arr[index] = value;
}
}
}
public class Example1 {
private long[] arr;
//有效數據的多少 長度
private int elements;//初始化爲0
public Example1(){
arr = new long[50];
}
public Example1(int maxsize){
arr = new long[maxsize];
}
/**
* 無序添加數據
*/
public void insert(long value){
arr[elements] = value;
elements++;
}
/**
* 有序添加數據
*/
public void insertorder(long value){
int i;
for(i = 0;i<elements;i++){
if(arr[i]>value){
break;
}
}
for(int j=elements;j>i;j--){
arr[j] = arr[j-1];
}
arr[i] = value;
elements++;
}
/**
* 顯示數據
*/
public void display(){
System.out.print("[");
for(int i=0;i<elements;i++){
if(i == (elements-1)){
System.out.print(arr[i]);
}else{
System.out.print(arr[i]+",");
}
}
System.out.print("]");
}
/**
* 屬於線性查找
* 根據值查找數據返回索引
*/
public int search(long value){
int i;
for(i=0;i<elements;i++){
if(value == arr[i]){
break;
}
}
if(i == elements){
return -1;
}else{
return i;
}
}
/**
* 二分法查找 前提,需要數組是有序,從中間分割
* 根據值查找數據返回索引
* -------------------------------------------------------------------
* | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
* -------------------------------------------------------------------
*/
public int getindex(long value){
int middle = 0;//中間值
int low = 0;//起始位置
int pow = elements;//最後位置
while(true){
middle = (pow + low) / 2;
if(arr[middle] == value){
return middle;
}else if(low > pow){
return -1;
}else{
if(arr[middle] > value){
pow = middle - 1;
}else{
low = middle + 1;
}
}
}
}
/**
* 根據索引查找
*/
public long get(int index){
if(index>=elements || index<0){
throw new ArrayIndexOutOfBoundsException();
}else{
return arr[index];
}
}
/**
* 刪除數據
*/
public void delete(int index){
if(index>=elements || index<0){
throw new ArrayIndexOutOfBoundsException();
}else{
for(int i=index;i<elements;i++){
arr[i] = arr[i+1];
}
elements--;
}
}
/**
* 更新數據
* @param index 索引
* @param value 更新後的值
*/
public void update(int index,long value){
if(index>=elements || index<0){
throw new ArrayIndexOutOfBoundsException();
}else{
arr[index] = value;
}
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.