Tre sortering
Tre sortering er en sorteringsalgoritme som er basert på Binært søketre datastruktur. Den oppretter først et binært søketre fra elementene i inndatalisten eller matrisen og utfører deretter en gjennomgang i rekkefølge på det opprettede binære søketreet for å få elementene i sortert rekkefølge.
Algoritme:
Trinn 1: Ta elementinngangen i en matrise.Trinn 2: Opprett et binært søketre ved å sette inn dataelementer fra matrisen i binært søketre .Trinn 3: Utfør gjennomgang i rekkefølge på treet for å få elementene i sortert rekkefølge.Programmer av tresort:
- Den vanligste bruken er å redigere elementene online: etter hver installasjon er et sett med objekter som er sett så langt tilgjengelig i et strukturert program.
- Hvis du bruker et splay-tre som et binært søketre, har den resulterende algoritmen (kalt splaysort) en tilleggsegenskap at den er en adaptiv sortering som betyr at arbeidstiden er raskere enn O (n log n) for virtuelle innganger.
Nedenfor er implementeringen for tilnærmingen ovenfor:
C++Java// C++ program to implement Tree Sort #includeusing namespace std ; struct Node { int key ; struct Node * left * right ; }; // A utility function to create a new BST Node struct Node * newNode ( int item ) { struct Node * temp = new Node ; temp -> key = item ; temp -> left = temp -> right = NULL ; return temp ; } // Stores inorder traversal of the BST // in arr[] void storeSorted ( Node * root int arr [] int & i ) { if ( root != NULL ) { storeSorted ( root -> left arr i ); arr [ i ++ ] = root -> key ; storeSorted ( root -> right arr i ); } } /* A utility function to insert a new Node with given key in BST */ Node * insert ( Node * node int key ) { /* If the tree is empty return a new Node */ if ( node == NULL ) return newNode ( key ); /* Otherwise recur down the tree */ if ( key < node -> key ) node -> left = insert ( node -> left key ); else if ( key > node -> key ) node -> right = insert ( node -> right key ); /* return the (unchanged) Node pointer */ return node ; } // This function sorts arr[0..n-1] using Tree Sort void treeSort ( int arr [] int n ) { struct Node * root = NULL ; // Construct the BST root = insert ( root arr [ 0 ]); for ( int i = 1 ; i < n ; i ++ ) root = insert ( root arr [ i ]); // Store inorder traversal of the BST // in arr[] int i = 0 ; storeSorted ( root arr i ); } // Driver Program to test above functions int main () { //create input array int arr [] = { 5 4 7 2 11 }; int n = sizeof ( arr ) / sizeof ( arr [ 0 ]); treeSort ( arr n ); for ( int i = 0 ; i < n ; i ++ ) cout < < arr [ i ] < < ' ' ; return 0 ; } Python3// Java program to // implement Tree Sort class GFG { // Class containing left and // right child of current // node and key value class Node { int key ; Node left right ; public Node ( int item ) { key = item ; left = right = null ; } } // Root of BST Node root ; // Constructor GFG () { root = null ; } // This method mainly // calls insertRec() void insert ( int key ) { root = insertRec ( root key ); } /* A recursive function to insert a new key in BST */ Node insertRec ( Node root int key ) { /* If the tree is empty return a new node */ if ( root == null ) { root = new Node ( key ); return root ; } /* Otherwise recur down the tree */ if ( key < root . key ) root . left = insertRec ( root . left key ); else if ( key > root . key ) root . right = insertRec ( root . right key ); /* return the root */ return root ; } // A function to do // inorder traversal of BST void inorderRec ( Node root ) { if ( root != null ) { inorderRec ( root . left ); System . out . print ( root . key + ' ' ); inorderRec ( root . right ); } } void treeins ( int arr [] ) { for ( int i = 0 ; i < arr . length ; i ++ ) { insert ( arr [ i ] ); } } // Driver Code public static void main ( String [] args ) { GFG tree = new GFG (); int arr [] = { 5 4 7 2 11 }; tree . treeins ( arr ); tree . inorderRec ( tree . root ); } } // This code is contributed // by Vibin MC## Python3 program to # implement Tree Sort # Class containing left and # right child of current # node and key value class Node : def __init__ ( self item = 0 ): self . key = item self . left self . right = None None # Root of BST root = Node () root = None # This method mainly # calls insertRec() def insert ( key ): global root root = insertRec ( root key ) # A recursive function to # insert a new key in BST def insertRec ( root key ): # If the tree is empty # return a new node if ( root == None ): root = Node ( key ) return root # Otherwise recur # down the tree if ( key < root . key ): root . left = insertRec ( root . left key ) elif ( key > root . key ): root . right = insertRec ( root . right key ) # return the root return root # A function to do # inorder traversal of BST def inorderRec ( root ): if ( root != None ): inorderRec ( root . left ) print ( root . key end = ' ' ) inorderRec ( root . right ) def treeins ( arr ): for i in range ( len ( arr )): insert ( arr [ i ]) # Driver Code arr = [ 5 4 7 2 11 ] treeins ( arr ) inorderRec ( root ) # This code is contributed by shinjanpatraJavaScript// C# program to // implement Tree Sort using System ; public class GFG { // Class containing left and // right child of current // node and key value public class Node { public int key ; public Node left right ; public Node ( int item ) { key = item ; left = right = null ; } } // Root of BST Node root ; // Constructor GFG () { root = null ; } // This method mainly // calls insertRec() void insert ( int key ) { root = insertRec ( root key ); } /* A recursive function to insert a new key in BST */ Node insertRec ( Node root int key ) { /* If the tree is empty return a new node */ if ( root == null ) { root = new Node ( key ); return root ; } /* Otherwise recur down the tree */ if ( key < root . key ) root . left = insertRec ( root . left key ); else if ( key > root . key ) root . right = insertRec ( root . right key ); /* return the root */ return root ; } // A function to do // inorder traversal of BST void inorderRec ( Node root ) { if ( root != null ) { inorderRec ( root . left ); Console . Write ( root . key + ' ' ); inorderRec ( root . right ); } } void treeins ( int [] arr ) { for ( int i = 0 ; i < arr . Length ; i ++ ) { insert ( arr [ i ]); } } // Driver Code public static void Main ( String [] args ) { GFG tree = new GFG (); int [] arr = { 5 4 7 2 11 }; tree . treeins ( arr ); tree . inorderRec ( tree . root ); } } // This code is contributed by Rajput-Ji< script > // Javascript program to // implement Tree Sort // Class containing left and // right child of current // node and key value class Node { constructor ( item ) { this . key = item ; this . left = this . right = null ; } } // Root of BST let root = new Node (); root = null ; // This method mainly // calls insertRec() function insert ( key ) { root = insertRec ( root key ); } /* A recursive function to insert a new key in BST */ function insertRec ( root key ) { /* If the tree is empty return a new node */ if ( root == null ) { root = new Node ( key ); return root ; } /* Otherwise recur down the tree */ if ( key < root . key ) root . left = insertRec ( root . left key ); else if ( key > root . key ) root . right = insertRec ( root . right key ); /* return the root */ return root ; } // A function to do // inorder traversal of BST function inorderRec ( root ) { if ( root != null ) { inorderRec ( root . left ); document . write ( root . key + ' ' ); inorderRec ( root . right ); } } function treeins ( arr ) { for ( let i = 0 ; i < arr . length ; i ++ ) { insert ( arr [ i ]); } } // Driver Code let arr = [ 5 4 7 2 11 ]; treeins ( arr ); inorderRec ( root ); // This code is contributed // by Saurabh Jaiswal < /script>
Produksjon2 4 5 7 11Kompleksitetsanalyse:
Gjennomsnittlig sakstidskompleksitet: O(n log n) Å legge til ett element til et binært søketre tar i gjennomsnitt O(log n) tid. Derfor vil det å legge til n elementer ta O(n log n) tid
Worst Case Tidskompleksitet: På 2 ). Den verste tidskompleksiteten til Tree Sort kan forbedres ved å bruke et selvbalanserende binært søketre som Red Black Tree AVL Tree. Å bruke selvbalanserende binært tre Tree Sort vil ta O(n log n) tid å sortere matrisen i verste fall.
Hjelpeplass: På)
Lag quiz
Du Liker Kanskje
Topp Artikler
Kategori