Sybatron

Sort Algorithm

Oct 29th, 2018
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.69 KB | None | 0 0
  1. Сортиране на масив по метода на пряката селекция(избор)
  2. Задача
  3. Да се състави алгоритъм за подреждане на масив a[0], a[2].a[n-1] в нарастващ ред.
  4. Описание на метода:
  5. 1.  От целия масив намираме индекса на елемента с най-малка стойност и разменяме стойността на този елемент със стойността на първия елемент.
  6. 2.  Намираме индекса на елемента с най-малка стойност сред елементите след първия и разменяме стойностите на този елемент и втория елемент.
  7. 3.  Намираме индекса на елемента с най-малка стойност сред елементите след втория и разменяме стойностите на този елемент и тези на третия елемент и т.н.
  8. Метод подреждащ във възходящ ред:
  9.    int k, m,x , min, nom, n;
  10.             Console.Write("Въведи n и масива а[n] ");
  11.             n = int.Parse(Console.ReadLine());
  12.             int[] a = new int[n];
  13.             for (k = 0; k < n; k++)
  14.                 a[k] = int.Parse(Console.ReadLine());
  15.             for (k = 0; k <n-1; k++)
  16.             {
  17.                 min = a[k]; nom=k;
  18.  
  19.                 for (m = k+1; m<=n-1; m++)
  20.                     if (a[m] < min) { min = a[m]; nom = m; }
  21.  
  22.                 x = a[k]; a[k] = a[nom]; a[nom] = x;
  23.             }
  24.  
  25.             Console.WrkteLine("Сортираният масив по метода на пряк избор е:");
  26.             for (k = 0; k < n; k++)
  27.                 Console.WriteLine(a[k]);
  28.  
  29.  
  30. Метод подреждащ във низходящ ред:
  31.    int k, x,m, max,nom, n;
  32.             Console.Write("Въведи n и масива а[n] ");
  33.             n = int.Parse(Console.ReadLine());
  34.             int[] a = new int[n];
  35.             for (k = 0; k < n; k++)
  36.                 a[k] = int.Parse(Console.ReadLine());
  37.             for (k = 0; k <n-1; k++)
  38.             {
  39.                 max = a[k]; nom=k;
  40.  
  41.                 for (m = k+1; m<=n-1; m++)
  42.                     if (a[m] < max) { max = a[m]; nom = m; }
  43.  
  44.                 x = a[k]; a[k] = a[nom]; a[nom] = x;
  45.             }
  46.  
  47.             Console.WrkteLine("Сортираният масив по метода на пряк избор е:");
  48.             for (k = 0; k < n; k++)
  49.                 Console.WriteLine(a[k]);
  50. --------------------------------------------------------------------------------------------------
  51.  
  52. Метод на мехурчето
  53.             Console.Write("Въведете броя на числата: ");
  54.             int n = int.Parse(Console.ReadLine());
  55.             int[] a = new int[n];
  56.             int help;
  57.             for (int i = 0; i < n; i++)
  58.             {
  59.                 Console.Write("Въведете {0}-то число: ",i+1);
  60.                 a[i] = int.Parse(Console.ReadLine());
  61.             }
  62.             for (int i = 0; i < n - 1; i++)
  63.             {
  64.                 for (int k = 0; k < n - 1; k++)
  65.                 {
  66.                     if (a[k] < a[k + 1])
  67.                     {
  68.                         help = a[k];
  69.                         a[k] = a[k + 1];
  70.                         a[k + 1] = help;
  71.                     }
  72.                 }
  73.             }
  74.             Console.WriteLine("Масива в низходящ ред е: ");
  75.             for (int i = 0; i < n; i++)
  76.             {
  77.                 Console.Write(a[i]+" ");
  78.             }
  79.             Console.WriteLine();
  80.             Console.Write("Натиснете клавиш...");
  81.             Console.ReadKey();
  82.  
  83. -----------------------------------------------------------------------------------------------
  84. Сортиране на едномерен масив по „Метода на прякото вмъкване“
  85. 1 задача
  86. Първите n-1 елемента на масива a0,а1...аn-1 са подредени в нарастващ ред , а елементът аn-1 е с произволна стойност. Да се състави програма за преместване /вмъкване/ на аn-1 елемент на такова място, че целият масив да стане подреден в нарастващ ред.
  87. Насоки за решение: Стойността на аn-1 да се присвои на нова променлива y и след това ще преместваме/избутваме/ елементите назад /an-1=an-2, an-2=an-3 и т.н. /докато стигнем до мястото, където трябва да вмъкнем y.
  88. int i, n, y = 0;
  89. n = int.Parse(Console.ReadLine());
  90. int[] a = new int[n];
  91. for (i = 0; i < n; i++)
  92. { a[i] = int.Parse(Console.ReadLine()); }
  93. y = a[n - 1];
  94. for (i = n - 2; i >= 0; i--)
  95. {
  96. if (y < a[i])
  97. a[i + 1] = a[i];
  98. else break;
  99. }
  100. //цикълът свършва при първия елемент <b
  101. a[i + 1] = y; //!i !(-) 1
  102. for (i = 0; i < n; i++)
  103. Console.WriteLine(a[i]);
  104. Сортиране на едномерен масив по „Метода на прякото вмъкване“
  105. 1. Същност на метода за подредба във възходящ ред:
  106. В променливата y запазваме стойността на a1 и а1 остава празна /т.е. свободна да записваме в нея без да губим стойността й/; сравняваме y с а0, ако y<a0 преместваме
  107. стойността от a0 в а1, така а0 остава празна; връщаме y на празното място.
  108. В y записваме стойността на a2, сравняваме y с а1, ако y<a1 преместваме стойността на a1 в a2. Сравняваме y с а0, ако y<a0, преместваме стойността на а0 в празната клетка /в случая клетката а1/ и а0 остава празна; връщаме y на празното място.
  109. И т.н. последователно записваме в y стойностите а345...an-1 (при което техните клетки стават празни); сравняваме стойността на y с клетките преди празната клетка, като започваме от дясно на ляво; ако y е по-малко от стойността в дадената клетка, стойността на клетката се премества в празната клетка. След като минем през всички клетки до а0 или стойността на у е по-голяма от дадената клетка, с която го сравняваме, връщаме y на празното място.
  110. int i, j, y, n, nom;
  111. Console.Write("Въведи n и масива A[n] ");
  112. n = int.Parse(Console.ReadLine());
  113. int[] a = new int[n];
  114. // въвеждане на масива
  115. for (i = 0; i < n; i++)
  116. a[i] = int.Parse(Console.ReadLine());
  117. //подреждане на масива по метода на прякото вмъкване /сортиране чрез вмъкване/
  118. for (i = 1; i <n; i++)
  119. { y=a[i]; nom=i; // запомняме "празната клетка"
  120. for (j = i-1; j >=0; j--)
  121. if (y<a[j])
  122. { a[nom] = a[j]; nom = j; }
  123. a[nom]=y;
  124. }
  125. Console.WriteLine("Сортираният масив чрез метода на вмъкването е:");
  126. for (i = 0; i < n; i++)
  127. Console.WriteLine(a[i]);
Advertisement
Add Comment
Please, Sign In to add comment