Java Data Structure Recursion

Source: Internet
Author: User

 

/* <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/> 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.