ГГ
Григорий Гридин

подскажите пожалуйста что изменить в коде быстрой сортировки методом Шелла С#

подскажите пожалуйста, как сделать эту сортировку в убывающем порядке, она у меня в возрастающем

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
struct work
{
public string name;
public string surname;
public string prop;
public string dok;
public int year;

}

namespace ConsoleApplication4
{
class Program
{
static void create_array(work[] a)
{
string path = "C:\\Users\\dfs\\Desktop\\2.txt";
StreamReader sr = new StreamReader(path, Encoding.GetEncoding(1251));
string line;
int i = 0;
while ((line = sr.ReadLine()) != null)
{
string[] s = line.Split(' ');
a.name = s[0];
a.surname = s[1];
a.prop = s[2];
a.dok = s[3];
a.year = int.Parse(s[4]);

i++;

}
sr.Close();
}
public static void quickSort(work[] arr, int low, int high)
{
int i = low;
int j = high;
work x = arr[(low + high) / 2];
do
{
while (arr.year < x.year) i++;
while (arr[j].year > x.year) j--;
if (i <= j)
{
work temp = arr;
arr = arr[j];
arr[j] = temp;
i++;
j--;
}
}
while (i < j);
if (low < j)
quickSort(arr, low, j);
else
if (i < high)
quickSort(arr, i, high);
else
{
Console.WriteLine("Наша база данных, после обработки M записей" + "\n");
print_array(arr);
shell_sort(arr);
}
}

public static void shell_sort(work [] a)
{
int step = a.Length;
while (step > 0)
{
for (int i = 0; i < a.Length - step; i++)
{
int j = i;
while ((j >= 0) && (a[j + step].year < a[j].year))
{
work temp = a[j];
a[j] = a[j + step];
a[j + step] = temp;
j--;
}
}
step /= 2;
}
}

public static void print_to_fail(work[] a)
{
string s = "C:\\Users\\dfs\\Desktop\\3.txt";
StreamWriter sr = new StreamWriter(s);
for (int i = 0; i < a.Length; i++)
sr.WriteLine("{0} {1} {2} {3} ", a.name, a.surname, a.prop, a.year);
sr.Close();
}

static void print_array(work[] a)
{
for (int i = 0; i < a.Length; i++)
{
Console.WriteLine("{0} {1} {2} {3} ", a.name, a.surname, a.prop, a.year);
}
Console.WriteLine("\n");
}
static void Main(string[] args)
{
work[] data = new work[7];
create_array(data);
print_array(data);
Console.WriteLine("Введите количество записей, которые сортуруются быстрой сортировкой " + "\n\n");
int M = int.Parse(Console.ReadLine());
quickSort(data, 0, M);
Console.WriteLine("Наша база данных, после полного упорядочения" + "\n");
print_array(data);
}
}
}

Ек
Екатерина

Со вчера ещё не решил? Офигеть.

Самый тупой способ - оставить всё как есть и в конце вызвать Array.Reverse

http://msdn.microsoft.com/ru-ru/library/d3877932.aspx

Если уж совсем лень разбираться в процедуре сортировки.

Похожие вопросы
Пожалуйста, разъясните метод быстрой сортировки, синтаксис и что здесь выполняется.
Сортировка методом пузырька. Си.
Блок-схема быстрой сортировки, код внутри
сортировка методом поиска максимума. написать алгоритм и код программы
Сортировка методом бинарной вставки
Сортировка Шелла на Си
каким спосабом организована сортировка? , методом "быстрой сортировки"? или это встроенная функция dbgrid
Как происходит сортировка слов, методом сортировки Хоара?
Сортировка массива методом вставки
помогите срочно. Что за метод сортировки с++