Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Сортиране на масив по метода на пряката селекция(избор)
- Задача
- Да се състави алгоритъм за подреждане на масив a[0], a[2]….a[n-1] в нарастващ ред.
- Описание на метода:
- 1. От целия масив намираме индекса на елемента с най-малка стойност и разменяме стойността на този елемент със стойността на първия елемент.
- 2. Намираме индекса на елемента с най-малка стойност сред елементите след първия и разменяме стойностите на този елемент и втория елемент.
- 3. Намираме индекса на елемента с най-малка стойност сред елементите след втория и разменяме стойностите на този елемент и тези на третия елемент и т.н.
- Метод подреждащ във възходящ ред:
- int k, m,x , min, nom, n;
- Console.Write("Въведи n и масива а[n] ");
- n = int.Parse(Console.ReadLine());
- int[] a = new int[n];
- for (k = 0; k < n; k++)
- a[k] = int.Parse(Console.ReadLine());
- for (k = 0; k <n-1; k++)
- {
- min = a[k]; nom=k;
- for (m = k+1; m<=n-1; m++)
- if (a[m] < min) { min = a[m]; nom = m; }
- x = a[k]; a[k] = a[nom]; a[nom] = x;
- }
- Console.WrkteLine("Сортираният масив по метода на пряк избор е:");
- for (k = 0; k < n; k++)
- Console.WriteLine(a[k]);
- Метод подреждащ във низходящ ред:
- int k, x,m, max,nom, n;
- Console.Write("Въведи n и масива а[n] ");
- n = int.Parse(Console.ReadLine());
- int[] a = new int[n];
- for (k = 0; k < n; k++)
- a[k] = int.Parse(Console.ReadLine());
- for (k = 0; k <n-1; k++)
- {
- max = a[k]; nom=k;
- for (m = k+1; m<=n-1; m++)
- if (a[m] < max) { max = a[m]; nom = m; }
- x = a[k]; a[k] = a[nom]; a[nom] = x;
- }
- Console.WrkteLine("Сортираният масив по метода на пряк избор е:");
- for (k = 0; k < n; k++)
- Console.WriteLine(a[k]);
- --------------------------------------------------------------------------------------------------
- Метод на мехурчето
- Console.Write("Въведете броя на числата: ");
- int n = int.Parse(Console.ReadLine());
- int[] a = new int[n];
- int help;
- for (int i = 0; i < n; i++)
- {
- Console.Write("Въведете {0}-то число: ",i+1);
- a[i] = int.Parse(Console.ReadLine());
- }
- for (int i = 0; i < n - 1; i++)
- {
- for (int k = 0; k < n - 1; k++)
- {
- if (a[k] < a[k + 1])
- {
- help = a[k];
- a[k] = a[k + 1];
- a[k + 1] = help;
- }
- }
- }
- Console.WriteLine("Масива в низходящ ред е: ");
- for (int i = 0; i < n; i++)
- {
- Console.Write(a[i]+" ");
- }
- Console.WriteLine();
- Console.Write("Натиснете клавиш...");
- Console.ReadKey();
- -----------------------------------------------------------------------------------------------
- Сортиране на едномерен масив по „Метода на прякото вмъкване“
- 1 задача
- Първите n-1 елемента на масива a0,а1...аn-1 са подредени в нарастващ ред , а елементът аn-1 е с произволна стойност. Да се състави програма за преместване /вмъкване/ на аn-1 елемент на такова място, че целият масив да стане подреден в нарастващ ред.
- Насоки за решение: Стойността на аn-1 да се присвои на нова променлива y и след това ще преместваме/избутваме/ елементите назад /an-1=an-2, an-2=an-3 и т.н. /докато стигнем до мястото, където трябва да вмъкнем y.
- int i, n, y = 0;
- n = int.Parse(Console.ReadLine());
- int[] a = new int[n];
- for (i = 0; i < n; i++)
- { a[i] = int.Parse(Console.ReadLine()); }
- y = a[n - 1];
- for (i = n - 2; i >= 0; i--)
- {
- if (y < a[i])
- a[i + 1] = a[i];
- else break;
- }
- //цикълът свършва при първия елемент <b
- a[i + 1] = y; //!i !(-) 1
- for (i = 0; i < n; i++)
- Console.WriteLine(a[i]);
- Сортиране на едномерен масив по „Метода на прякото вмъкване“
- 1. Същност на метода за подредба във възходящ ред:
- В променливата y запазваме стойността на a1 и а1 остава празна /т.е. свободна да записваме в нея без да губим стойността й/; сравняваме y с а0, ако y<a0 преместваме
- стойността от a0 в а1, така а0 остава празна; връщаме y на празното място.
- В y записваме стойността на a2, сравняваме y с а1, ако y<a1 преместваме стойността на a1 в a2. Сравняваме y с а0, ако y<a0, преместваме стойността на а0 в празната клетка /в случая клетката а1/ и а0 остава празна; връщаме y на празното място.
- И т.н. последователно записваме в y стойностите а3,а4,а5...an-1 (при което техните клетки стават празни); сравняваме стойността на y с клетките преди празната клетка, като започваме от дясно на ляво; ако y е по-малко от стойността в дадената клетка, стойността на клетката се премества в празната клетка. След като минем през всички клетки до а0 или стойността на у е по-голяма от дадената клетка, с която го сравняваме, връщаме y на празното място.
- int i, j, y, n, nom;
- Console.Write("Въведи n и масива A[n] ");
- n = int.Parse(Console.ReadLine());
- int[] a = new int[n];
- // въвеждане на масива
- for (i = 0; i < n; i++)
- a[i] = int.Parse(Console.ReadLine());
- //подреждане на масива по метода на прякото вмъкване /сортиране чрез вмъкване/
- for (i = 1; i <n; i++)
- { y=a[i]; nom=i; // запомняме "празната клетка"
- for (j = i-1; j >=0; j--)
- if (y<a[j])
- { a[nom] = a[j]; nom = j; }
- a[nom]=y;
- }
- Console.WriteLine("Сортираният масив чрез метода на вмъкването е:");
- for (i = 0; i < n; i++)
- Console.WriteLine(a[i]);
Advertisement
Add Comment
Please, Sign In to add comment