Advertisement
riabcis

Untitled

Mar 3rd, 2018
426
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.68 KB | None | 0 0
  1. using System;
  2. namespace InsertSort
  3. {
  4.     class Insert_Sort
  5.     {
  6.         static void Main(string[] args)
  7.         {
  8.             Console.WriteLine(Int16.MaxValue);
  9.             Console.WriteLine(Int32.MaxValue);
  10.             Console.WriteLine(Int64.MaxValue);
  11.              Console.WriteLine((-50011/100000)%10);
  12.             Console.WriteLine((-0)>(0));
  13.             int seed = (int)DateTime.Now.Ticks & 0x0000FFFF;
  14.             // Pirmas etapas
  15.             Test_Array_List(seed);
  16.             Console.ReadLine();
  17.         }
  18.  
  19.         public static void InsertSort(DataArray items)
  20.         {
  21.             Int16 currentdata;
  22.             int index;
  23.             for (int i = 1; i<items.Length; i++)
  24.             {
  25.                 currentdata = items[i];
  26.                 index = i;
  27.  
  28.                 while (index>0 && items[index-1]>currentdata)
  29.                 {
  30.                     items.Set(index, items[index - 1]);
  31.                     index--;
  32.                 }
  33.                 items.Set(index, currentdata);
  34.             }
  35.         }
  36.         public static void InsertSort(DataList items)
  37.         {
  38.             Int16 currentdata =items.Head();
  39.             for (int i = 1; i <items.Length; i++)
  40.             {
  41.                 currentdata = items.Next();
  42.              
  43.                 while (currentdata<items.PreviousWithout())
  44.                 {
  45.                     items.Swap(currentdata,items.PreviousWithout());
  46.                     currentdata=items.Previous();
  47.                     i--;
  48.                }
  49.             }
  50.         }
  51.  
  52.         public static void RadixSort(DataArray items)
  53.         {
  54.             int MaxValueDigits = (int)Math.Floor(Math.Log10(getMaxValue(items)) + 1);
  55.             for (int i = 0; i < MaxValueDigits; i++)
  56.             {
  57.                 Int16 currentdata;
  58.                 int index;
  59.                 for (int j = 1; j < items.Length; j++)
  60.                 {
  61.                     currentdata = items[j];
  62.                     index = j;
  63.  
  64.                     while (GetDigit(currentdata, i) < GetDigit(items[index-1], i))
  65.                     {
  66.                         items.Set(index, items[index - 1]);
  67.                         index--;
  68.                         if (index == 0) break;
  69.                     }
  70.                     items.Set(index, currentdata);
  71.                 }
  72.             }
  73.         }
  74.  
  75.         public static void RadixSort(DataList items)
  76.         {
  77.             int MaxValueDigits = (int)Math.Floor(Math.Log10(getMaxValue(items)) + 1);
  78.             for (int i = 0; i < MaxValueDigits; i++)
  79.             {
  80.                 Int16 curr = items.Head();
  81.                 for(int j = 1; j < items.Length; j++)
  82.                 {
  83.                     curr = items.Next();
  84.                     while (GetDigit(curr, i) < GetDigit(items.PreviousWithout(), i))
  85.                     {
  86.                         items.Swap(curr, items.PreviousWithout());
  87.                         curr = items.Previous();
  88.                         j--;
  89.                         if (j == 0) break;
  90.                     }
  91.                 }
  92.             }
  93.         }
  94.         public static int GetDigit(int number, int DigitNumber)
  95.         {
  96.             for (int i = 0; i < DigitNumber; i++)
  97.             {
  98.                 number = number / 10;
  99.             }
  100.  
  101.             return number % 10;
  102.         }
  103.         public static Int16 getMaxValue(DataArray items)
  104.         {
  105.             Int16 max = items[0];
  106.             Int16 min = items[0];
  107.             for (int i = 1; i < items.Length; i++)
  108.             {
  109.                 Int16 curr = items[i];
  110.                 if (max < curr)
  111.                 {
  112.                     max = curr;
  113.                 }
  114.                 if(min > curr)
  115.                 {
  116.                     min = curr;
  117.                 }
  118.             }
  119.             if (min < 0) min *= (-1);
  120.             if (max < 0) max *= (-1);
  121.             return max > min ? (Int16)max : (Int16)min;
  122.         }
  123.         public static Int16 getMaxValue(DataList items)
  124.         {
  125.             Int16 curr = items.Head();
  126.             Int16 max = curr;
  127.             Int16 min = curr;
  128.             for(int i=1; i < items.Length; i++)
  129.             {
  130.                 curr = items.Next();
  131.                 if (max < curr)
  132.                 {
  133.                     max = curr;
  134.                 }
  135.                 if (min > curr)
  136.                 {
  137.                     min = curr;
  138.                 }
  139.             }
  140.             if (min < 0) min *= (-1);
  141.             if (max < 0) max *= (-1);
  142.             return max > min ? (Int16)max : (Int16)min;
  143.         }
  144.         public static void Test_Array_List(int seed)
  145.         {
  146.             int n = 5;
  147.  
  148.             MyDataArray myInsertSortArray = new MyDataArray(n, seed);
  149.             Console.WriteLine("\n Insert Sort ARRAY \n");
  150.             myInsertSortArray.Print(n);
  151.             InsertSort(myInsertSortArray);
  152.             myInsertSortArray.Print(n);
  153.  
  154.             MyDataList myInsertSortList = new MyDataList(n, seed);
  155.             Console.WriteLine("\n Insert Sort LIST \n");
  156.             myInsertSortList.Print(n);
  157.             InsertSort(myInsertSortList);
  158.             myInsertSortList.Print(n);
  159.  
  160.             MyDataArray myRadixSortArray = new MyDataArray(n, seed);
  161.             Console.WriteLine("\n Radix Sort ARRAY \n");
  162.             myRadixSortArray.Print(n);
  163.             RadixSort(myRadixSortArray);
  164.             myRadixSortArray.Print(n);
  165.  
  166.             MyDataList myRadixSortList = new MyDataList(n, seed);
  167.             Console.WriteLine("\n Radix Sort LIST \n");
  168.             myRadixSortList.Print(n);
  169.             RadixSort(myRadixSortList);
  170.             myRadixSortList.Print(n);  
  171.         }
  172.     }
  173.     abstract class DataArray
  174.     {
  175.         protected int length;
  176.         public int Length { get { return length; } }
  177.         public abstract Int16 this[int index] { get; }
  178.         public abstract void Swap(int j, Int16 a, Int16 b);
  179.         public abstract void Set(int i, Int16 value);
  180.         public void Print(int n)
  181.         {
  182.             for (int i = 0; i < n; i++)
  183.                 Console.Write(" {0:d} ", this[i]);
  184.             Console.WriteLine();
  185.         }
  186.     }
  187.     abstract class DataList
  188.     {
  189.         protected int length;
  190.         public int Length { get { return length; } }
  191.         public abstract Int16 Head();
  192.         public abstract Int16 Next();
  193.         public abstract Int16 Previous();
  194.         public abstract Int16 PreviousWithout();
  195.         public abstract void Swap(Int16 a, Int16 b);
  196.         public void Print(int n)
  197.         {
  198.             Console.Write(" {0:d} ", Head());
  199.             for (int i = 1; i < n; i++)
  200.                 Console.Write(" {0:d} ", Next());
  201.             Console.WriteLine();
  202.         }
  203.     }
  204. }
  205.  
  206.  
  207.  
  208. //****************************************
  209. using System;
  210. using System.IO;
  211. namespace InsertSort
  212. {
  213.     class MyDataArray : DataArray
  214.     {
  215.         Int16[] data;
  216.         public MyDataArray(int n, int seed)
  217.         {
  218.             data = new Int16[n];
  219.             length = n;
  220.             Random rand = new Random(seed);
  221.             for(int i = 0; i < length; i++)
  222.             {
  223.                
  224.                 data[i] =  (Int16)rand.Next(short.MinValue, short.MaxValue);
  225.             }
  226.         }
  227.         public override Int16 this[int index]
  228.         {
  229.             get { return data[index]; }
  230.  
  231.         }
  232.         public override void Swap(int j, Int16 a, Int16 b)
  233.         {
  234.             data[j - 1] = a;
  235.             data[j] = b;
  236.         }
  237.  
  238.         public override void Set(int i, Int16 value)
  239.         {
  240.             data[i] = value;
  241.         }
  242.     }
  243. }
  244.  
  245.  
  246. //****************************
  247. using System;
  248. using System.IO;
  249. namespace InsertSort
  250. {
  251.     class MyDataList : DataList
  252.     {
  253.         class MyLinkedListNode
  254.         {
  255.             public MyLinkedListNode nextNode { get; set; }
  256.             public MyLinkedListNode prevNode { get; set; }//
  257.             public Int16 data { get; set; }
  258.             public MyLinkedListNode(Int16 data)
  259.             {
  260.                 this.data = data;
  261.             }
  262.         }
  263.         MyLinkedListNode headNode;
  264.         MyLinkedListNode prevNode;
  265.         MyLinkedListNode currentNode;
  266.         public MyDataList(int n, int seed)
  267.         {
  268.             length = n;
  269.             Random rand = new Random(seed);
  270.             headNode = new MyLinkedListNode((Int16)rand.Next(short.MinValue, short.MaxValue));
  271.             currentNode = headNode;
  272.             for (int i = 1; i < length; i++)
  273.             {
  274.                 prevNode = currentNode;
  275.                 currentNode.nextNode = new MyLinkedListNode((Int16)rand.Next(short.MinValue, short.MaxValue));
  276.                 currentNode = currentNode.nextNode;
  277.                 currentNode.prevNode = prevNode;//
  278.             }
  279.             currentNode.nextNode = null;
  280.         }
  281.         public override Int16 Head()
  282.         {
  283.             currentNode = headNode;
  284.             prevNode = null;
  285.             return currentNode.data;
  286.         }
  287.         public override Int16 Next()
  288.         {
  289.             prevNode = currentNode;
  290.             currentNode = currentNode.nextNode;
  291.             return currentNode.data;
  292.         }
  293.  
  294.         public override Int16 Previous()
  295.         {
  296.             prevNode = currentNode;
  297.             currentNode = currentNode.prevNode;
  298.             return currentNode.data;
  299.         }
  300.  
  301.         public override Int16 PreviousWithout()
  302.         {
  303.             if (currentNode != headNode)
  304.             {
  305.                 return currentNode.prevNode.data;
  306.             } else
  307.             {
  308.                 return Int16.MinValue;
  309.             }
  310.         }
  311.  
  312.         public override void Swap(Int16 a, Int16 b)//current/prev
  313.         {
  314.              currentNode.prevNode.data = a;
  315.              currentNode.data = b;
  316.         }
  317.     }
  318. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement