Advertisement
ZazoTazo

DS Lab 1

Jan 6th, 2021
1,136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.92 KB | None | 0 0
  1. class List
  2.     {
  3.         int n;
  4.         private int count = 0;
  5.         int[] list;
  6.         delegate int searchNumber(int search);
  7.  
  8.         public List()
  9.         {
  10.             //default size = 5
  11.             list = new int[5];
  12.         }
  13.  
  14.         public List(int number)
  15.         {
  16.             n = number;
  17.             list = new int[n];
  18.         }
  19.  
  20.         ~List()
  21.         {
  22.             //destroy list
  23.             list = null;
  24.         }
  25.  
  26.         public void Add(int number)
  27.         {
  28.             if(count < n)
  29.             {
  30.                 list[count] = number;
  31.                 count++;
  32.             }
  33.             else
  34.             {
  35.                 Console.WriteLine("Error, list is full");
  36.             }
  37.         }
  38.  
  39.         public void Clear()
  40.         {
  41.             for(int i = 0; i < list.Length; i++){
  42.                 list[i] = 0;
  43.             }
  44.             count = 0;
  45.         }
  46.  
  47.         public void Display()
  48.         {
  49.             for(int i = 0; i < list.Length; i++)
  50.             {
  51.                 Console.WriteLine(list[i]);
  52.             }
  53.         }
  54.  
  55.         private void BubbleSort()
  56.         {
  57.             int temp;
  58.             for(int i = 0; i < list.Length; i++)
  59.             {
  60.                 for(int j = 0; j < list.Length - 1 - i; j++)
  61.                 {
  62.                     if(list[j] > list[j + 1])
  63.                     {
  64.                         temp = list[j];
  65.                         list[j] = list[j + 1];
  66.                         list[j + 1] = temp;
  67.                     }
  68.                 }
  69.             }
  70.         }
  71.  
  72.         private void InsertionSort()
  73.         {
  74.             int temp;
  75.             for(int i = 1; i < list.Length; i++)
  76.             {
  77.                 for(int j = i; j > 0; j--)
  78.                 {
  79.                     if(list[j] < list[j - 1])
  80.                     {
  81.                         temp = list[j];
  82.                         list[j] = list[j - 1];
  83.                         list[j - 1] = temp;
  84.                     }
  85.                 }
  86.             }
  87.         }
  88.  
  89.         private void SelectionSort()
  90.         {
  91.             int temp, smallestIndex, minIndex;
  92.             for(int i = 0; i < list.Length; i++)
  93.             {
  94.                 smallestIndex = i;
  95.                 for(minIndex = i + 1; minIndex < list.Length; i++)
  96.                 {
  97.                     if(list[minIndex] < list[smallestIndex])
  98.                     {
  99.                         smallestIndex = minIndex;
  100.                     }
  101.                 }
  102.                 temp = list[smallestIndex];
  103.                 list[smallestIndex] = list[i];
  104.                 list[i] = temp;
  105.             }
  106.         }
  107.  
  108.         private int linearSearch(int key)
  109.         {
  110.             int location = -1;
  111.             for(int i=0; i < list.Length; i++)
  112.             {
  113.                 if(key == list[i])
  114.                 {
  115.                     location = i;
  116.                     break;
  117.                 }
  118.             }
  119.             return location;
  120.         }
  121.        
  122.         private int binarySearch(int key)
  123.         {
  124.             int first = 0;
  125.             int last = list.Length - 1;
  126.             int middle;
  127.  
  128.             while(first < last)
  129.             {
  130.                 middle = (first + last) / 2;
  131.                 if(key == list[middle])
  132.                 {
  133.                     return middle;
  134.                 }
  135.                 else if(key < list[middle])
  136.                 {
  137.                     last = middle - 1;
  138.                 }
  139.                 else
  140.                 {
  141.                     first = middle + 1;
  142.                 }
  143.             }
  144.             return -1;
  145.         }
  146.  
  147.         public void Sort(string sortName)
  148.         {
  149.             Action sort;
  150.             switch (sortName.ToLower())
  151.             {
  152.                 case "bubble":
  153.                     sort = BubbleSort;
  154.                     sort();
  155.                     break;
  156.                 case "insertion":
  157.                     sort = InsertionSort;
  158.                     sort();
  159.                     break;
  160.                 case "selection":
  161.                     sort = SelectionSort;
  162.                     sort();
  163.                     break;
  164.                 default:
  165.                     Console.WriteLine("Error, wrong sort algorithm");
  166.                     break;
  167.             }
  168.         }
  169.         public void Search(string searchName, int i)
  170.         {
  171.            
  172.             switch (searchName.ToLower())
  173.             {
  174.                 case "linear":
  175.                     searchNumber ls = new searchNumber(linearSearch);
  176.                     Console.WriteLine("Position: {0}", ls(i));
  177.                     break;
  178.                 case "binary":
  179.                     searchNumber bs = new searchNumber(binarySearch);
  180.                     Console.WriteLine("Position: {0}", bs(i));
  181.                     break;
  182.                 default:
  183.                     Console.WriteLine("Error, wrong search algorithm");
  184.                     break;
  185.             }
  186.         }
  187.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement