/* <Br/> half-Lookup (Binary lookup) <br/> */<br/> public class binarysearch <t extends comparable <t> <br/>{< br/> private T [] Data; <br/> Public binarysearch (T [] data) <br/>{< br/> This. data = data; <br/>}< br/> Public int search (T key) <br/>{< br/> int low; <br/> int high; <br/> int mid; <br/> If (Data = NULL) <br/> return-1; <br/> low = 0; <br/> high = data. length-1; <br/> while (low <= high) <br/>{< br/> mid = (low + high)/2; <br/> system. out. println ("mid" + Mid + "mid value:" + data [Mid]); <br/> If (key. compareto (data [Mid]) <0) <br/>{< br/> high = mid-1; <br/>}< br/> else if (key. compareto (data [Mid])> 0) <br/>{< br/> low = Mid + 1; <br/>}< br/> else if (key. compareto (data [Mid]) = 0) <br/>{< br/> return mid; <br/>}< br/> return-1; <br/>}< br/> private int dosearchrecursively (INT low, int high, t key) <br/>{< br/> int mid; <br/> int result; <br/> If (low <= high) <br/>{< br/> mid = (low + high)/2; <br/> result = key. compareto (data [Mid]); <br/> system. out. println ("mid" + Mid + "mid value:" + data [Mid]); <br/> If (result <0) <br/>{< br/> return dosearchrecursively (low, mid-1, key); <br/>}< br/> else if (result> 0) <br/>{< br/> return dosearchrecursively (Mid + 1, high, key); <br/>} else if (result = 0) <br/>{< br/> return mid; <br/>}< br/> return-1; <br/>}< br/> Public int searchrecursively (T key) <br/>{< br/> If (Data = NULL) Return-1; <br/> return dosearchrecursively (0, Data. length-1, key); <br/>}< br/> Public static void main (string [] ARGs) <br/>{< br/> integer [] DATA = {, 96 }; <br/> // binarysearch <integer> binsearch = new binarysearch <integer> (data); <br/> // system. out. println ("Key Index:" + binsearch. searchrecursively (3); <br/> // system. out. println ("Key Index:" + binsearch. search (33); <br/> // string [] datastr = {"A", "C", "F", "J", "L ", "N", "T" };< br/> // binarysearch <string> binsearch = new binarysearch <string> (datastr); <br/> // system. out. println ("Key Index:" + binsearch. search ("F"); <br/>}< br/>}
<Br/> public class test1 <br/> {<br/> Public static void main (string [] ARGs) <br/>{< br/> int T [] = {1, 2, 4, 3}; <br/> range (T, 0 ); <br/>}< br/> Public static void range (INT [] A, int start) <br/>{< br/> If (START =. length) <br/> {<br/> for (INT I = 0; I <. length; I ++) <br/>{< br/> system. out. print (A [I]); <br/>}< br/> system. out. println (); <br/> return; <br/>}< br/> for (INT I = start; I <. length; I ++) <br/>{< br/> int temp = A [start]; <br/> A [start] = A [I]; <br/> A [I] = temp; <br/> range (A, start + 1); <br/> A [I] = A [start]; <br/> A [start] = temp; <br/>}< br/>}
Public class Test2 <br/>{< br/> Public static void main (string ARGs []) <br/>{< br/> int T [] = {1, 2, 4, 3 };< br/> range (T, 0); <br/>}< br/> Public static void range (INT [] A, int start) <br/>{< br/> If (START =. length) <br/> {<br/> for (INT I = 0; I <. length; I ++) <br/>{< br/> system. out. print (A [I]); <br/>}< br/> system. out. println (); <br/> return; <br/>}< br/> int Dest [] = new int [. length]; <br/> system. arraycopy (A, 0, DEST, 0,. length); <br/> for (INT I = start; I <. length; I ++) <br/>{< br/> int temp = Dest [start]; <br/> Dest [start] = Dest [I]; <br/> Dest [I] = temp; <br/> range (DEST, start + 1); <br/>}< br/>}
Public class test3 <br/>{< br/> Public static void main (string ARGs []) <br/>{< br/> int T [] = {1, 2, 3, 4 }; <br/> range (T, 0); <br/>}< br/> Public static void range (INT [] A, int start) <br/>{< br/> If (START =. length) <br/> {<br/> for (INT I = 0; I <. length; I ++) <br/>{< br/> system. out. print (A [I]); <br/>}< br/> system. out. println (); <br/> return; <br/>}< br/> for (INT I = start; I <. length; I ++) <br/>{< br/> int Dest [] = new int [. length]; <br/> system. arraycopy (A, 0, DEST, 0,. length); <br/> int temp = Dest [start]; <br/> Dest [start] = Dest [I]; <br/> Dest [I] = temp; <br/> range (DEST, start + 1); <br/>}< br/>}
<Br/> public class arraysh <br/> {<br/> int [] thearray; <br/> int nelems; <br/> int COUNT = 0; <br/> arraysh (INT max) <br/>{< br/> thearray = new int [Max]; <br/> nelems = max; <br/>}< br/> Public static void main (string [] ARGs) <br/>{< br/> int maxsize = 16; <br/> arraysh arr; <br/> arr = new arraysh (maxsize); <br/> for (Int J = 0; j <maxsize; j ++) <br/>{< br/> int n = (INT) (Java. lang. math. random () * 99); <br/> arr. insert (n); <br/>}< br/> arr. display (); <br/> arr. quicksort (); <br/> arr. display (); <br/>}< br/> Public void insert (int I) <br/>{< br/> thearray [count ++] = I; <br/>}< br/> Public void display () <br/> {<br/> for (int I: thearray) <br/>{< br/> system. out. print (I + ""); <br/>}< br/> system. out. println (); <br/>}< br/> Public void quicksort () <br/>{< br/> recquicksort (0, nelems-1 ); <br/>}< br/> Public void recquicksort (INT left, int right) <br/>{< br/> If (right-left <= 0) <br/> return; <br/> else <br/> {<br/> long partition = thearray [right]; <br/> int partition = partitionit (left, right, reverse); <br/> recquicksort (left, partition-1); <br/> recquicksort (partition + 1, right ); <br/>}< br/> Public int partitionit (INT left, int right, long distance) <br/>{< br/> int leftptr = left-1; <br/> int rightptr = right; <br/> while (true) <br/>{< br/> while (thearray [++ leftptr] <iterator ); <br/> while (rightptr> 0 & thearray [-- rightptr]> Break); <br/> If (leftptr> = rightptr) break; <br/> else <br/> swap (leftptr, rightptr); <br/>}< br/> swap (leftptr, right); <br/> return leftptr; <br/>}< br/> Public void swap (INT dex1, int dex2) <br/>{< br/> int temp = thearray [dex1]; <br/> thearray [dex1] = thearray [dex2]; <br/> thearray [dex2] = temp; <br/>}< br/>}
// Package sort; <br/> Import Java. util. date; <br/> Import Java. util. random; <br/>/* <br/> * Insert sort <br/> */<br/> public class insertsort <br/>{< br/> Public static void main (string ARGs []) <br/>{< br/> int Len = 20; <br/> date = new date (); <br/> random = new random (date. getseconds (); <br/> int data [] = new int [Len]; <br/> for (INT I = 0; I <Len; I ++) <br/> {<br/> data [I] = (INT) (random. nextfloat () * 100 + 1); <br/>}< br/> show (data); <br/> insertsort (data, data. length); <br/> show (data); <br/> system. out. println (binarysearch (data, 1, Data. length, 55); <br/> system. out. println (binarysearch2 (data, 55); <br/> insertsortdesc (data); <br/> show (data); <br/> system. out. println (binarysearch (data, 1, Data. length, 55); <br/> system. out. println (binarysearch2 (data, 55 )); <br/>}< br/>/* <br/> * Insert the sorting core <br/> */<br/> Private Static void insertsortdesc (INT [] data) <br/> {<br/> int length = data. length; <br/> for (INT I = 1; I <length; I ++) <br/> {<br/> int temp = data [I]; <br/> Int J = I-1; <br/> while (j> = 0 & Data [J] <temp) <br/>{< br/> data [J + 1] = data [J]; <br/> j --; <br/>}< br/> data [J + 1] = temp; <br/>}< br/> Private Static void insertsortasc (INT [] data) <br/>{< br/> int length = data. length; <br/> for (INT I = 1; I <length; I ++) <br/> {<br/> int temp = data [I]; <br/> Int J = I-1; <br/> while (j> = 0 & Data [J]> temp) <br/>{< br/> data [J + 1] = data [J]; <br/> j --; <br/>}< br/> data [J + 1] = temp; <br/>}< br/> Private Static void show (INT [] data) <br/>{< br/> system. out. println ("=========================== "); <br/> for (INT I = 0; I <data. length; I ++) <br/>{< br/> system. out. print (data [I] + ""); <br/>}< br/> system. out. println (); <br/> system. out. println ("=========================== "); <br/>}< br/>/* <br/> * recursive insertion Sorting Algorithm <br/> */<br/> Private Static void insertsort (INT [] data, int N) <br/>{< br/> If (n> 1) <br/>{< br/> insertsort (data, n-1 ); <br/> Merge (data, n-1, n); <br/>}< br/> Private Static void merge (INT [] data, int end, int N) <br/>{< br/> int temp = data [n-1]; <br/> int I; <br/> for (I = end-1; i> = 0; I --) <br/>{< br/> If (data [I]> temp) <br/> data [I + 1] = data [I]; <br/> else <br/> break; <br/>}< br/> data [I + 1] = temp; <br/>}< br/>/* <br/> * recursive binary search algorithm, only arrays in ascending order can be <br/> */<br/> Private Static int binarysearch (INT [] data, int start, int end, int value) <br/>{< br/> If (end> = Start) <br/>{< br/> int Pos = (start + end)/2; <br/> If (value = data [pos-1]) <br/> return Pos; <br/> else if (value> data [pos-1]) <br/> return binarysearch (data, POS + 1, end, value); <br/> else <br/> return binarysearch (data, start, pos-1, value ); <br/>}< br/> return-1; <br/>}</P> <p>/* <br/> * iterative binary search algorithm, only arrays in ascending order can be searched <br/> */<br/> Private Static int binarysearch2 (INT [] data, int value) <br/>{< br/> int start = 0; <br/> int end = data. length-1; <br/> int mid; <br/> while (end> = Start) <br/>{< br/> mid = (end + start) /2; <br/> If (value> data [Mid]) <br/> Start = Mid + 1; <br/> else if (value <data [Mid]) <br/> end = mid-1; <br/> else <br/> return mid + 1; <br/>}< br/> return-1; <br/>}< br/>