Быстрая сортировка (рекурсия) - C#
Формулировка задачи:
Ребят, помогите!
Основным элементом быстрой сортировки явлеятся опорный элемент, и собственно с ним то и проблема(
Надо чтобы в консоль помимо массива "до" и "после" выводился ещё и опорный элемент, и всякий раз когда он меняет своё значение, надо чтобы оно выводилось в консоль. В общем чтобы в консоли были записанны все опорные элементы) как то так. С этим проблема, помогите пж.
вот код программы.
Массив берёртся из файла.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace Lab_9 { class Program { public static void Qs(int first, int last, int[] s_arr) { int c; int i = first; int j = last; int temp = s_arr[(last-first) / 2 + first]; while (i<=j) { while ((i <= last) && (s_arr[i] < temp)) ++i; while ((j >= first) && (s_arr[j] > temp)) --j; if (i <= j) { c = s_arr[i]; s_arr[i] = s_arr[j]; s_arr[j] = c; Console.WriteLine(temp); i++; j--; } } while (i <= j); if (j > first) Qs(first, j, s_arr); if (i < last) Qs(i, last, s_arr); } static void Main(string[] args) { Console.WriteLine("Быстрая сортировка"); int i, l, u, n = 15; l = 0; u = 14; int[] A = new int[n]; StreamReader f = new StreamReader("F:\\САОД\\Новая папка\\ЛАБА9\\ЛАБА9\\1.txt"); for (i = 0; i < n; i++) { A[i] = Convert.ToInt32(f.ReadLine()); Console.Write(A[i] + " "); } Console.WriteLine("\n"); Qs(l, u, A); StreamWriter fl = new StreamWriter("F:\\САОД\\Новая папка\\ЛАБА9\\ЛАБА9\\2.txt"); for (i = 0; i < n; i++) { fl.WriteLine(Convert.ToString(A[i])); Console.Write(" "); Console.Write(A[i] + " "); } fl.Close(); Console.ReadKey(); } } }
Решение задачи: «Быстрая сортировка (рекурсия)»
textual
Листинг программы
void sort::quickSort(int M,int N) { int i=M,j=N,x=0; int p=num[(N+M)>>1];/*поразрядный сдивг вправо на 1 эл-нт-означает сдвиг битов на 1 позицию вправо (деля на 2 в двоичной сис-ме мы "откидываем" последнюю цифру в дроб. часть, которая в данном случае "вырезается")*/ do//разделение массива по эл-ту p { for(;num[i]<p;i++){} for(;num[j]>p;j--){} if (i<=j) { if (i<j) { x=num[j]; num[j]=num[i]; num[i]=x; } i++; j--; } } while(i<=j); if(i<N) quickSort(i,N);//левая сторона if(j>M) quickSort(M,j);//правая сторона }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д