Ordered Array Data Structure Example
The following is the example code for an ordered array data structure. OrderedArrayDataStructure class encapsulate the array and its algorithms. We could have used binary search to find the position where we can insert element into the array. But for simplicity we can use linear search in insert method.
Ordered Array data structure and algorithms
package com.sneppets.dsalgo; public class OrderedArrayDataStructure { //reference to array arr private long[] arr; //number of elements in the array private int n; //constructor public OrderedArrayDataStructure (int arrSize){ //create array arr = new long[arrSize]; //no elements yet n = 0; } //method to return number of elements in the array currently public int size(){ return n; } //find element using binary search public int find (long elementKey){ int lBound = 0; int uBound = n-1; int cursIn; while (true){ cursIn = (lBound + uBound)/2; if(arr[cursIn] == elementKey){ return cursIn; //found the element } else if(lBound > uBound){ return n; //can't find it } else { //divide range logic if(arr[cursIn] < elementKey) { lBound = cursIn + 1; //it's in upper half } else { uBound = cursIn -1; //it's in lower half } } //end of divide range logic } //end of while } //end of find //insert element into array - can use binary search to locate the position where new item will be inserted. But for simplicity we can use linear search in insert(). public void insert(long element){ int i; for (i=0; i<n; i++) if(arr[i] > element) //linear search break; for (int j=n; j>i; j--) //moving bigger ones up arr[j] = arr[j-1]; arr[i] = element; //insert the element n++; //increment the size } //end of insert public boolean delete(long element){ int i = find(element); //binary search - to locate the item to be deleted if (i == n){ //can't find it return false; } else { //found the element for(int j=i; j<n; j++){ //move larger ones down arr[j] = arr[j+1]; } n--; //decrement size return true; } } //end of delete function //display array contents public void display(){ for(int i=0; i<n; i++){ System.out.println(arr[i]+ " "); } } }
OrderedArrayDataStructureTest.java
package com.sneppets.dsalgo; public class OrderedArrayDataStructureTest { public static void main (String[] args){ //array size int arrSize = 10; //reference to array data structure OrderedArrayDataStructure arrayDS; //create the array arrayDS = new OrderedArrayDataStructure(arrSize); //insert 5 elements arrayDS.insert(11); arrayDS.insert(33); arrayDS.insert(55); arrayDS.insert(22); arrayDS.insert(44); //display array elements arrayDS.display(); //search for element 77 int element = 22; if(arrayDS.find(element) != arrayDS.size()){ System.out.println("Found element "+ element); } else{ System.out.println("Could not find element "+ element); } //delete 2 elements arrayDS.delete(33); arrayDS.delete(55); //display again arrayDS.display(); } }
Output
11 22 33 44 55 Found element 22 11 22 44