Нужна помощь

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Trype, 7 Aug 2013.

  1. Trype

    Trype New Member

    Joined:
    7 Sep 2012
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Имеется "X" количество цифр, с дробью и без, есть повторяющиеся "Y" раз, их нужно сортировать по величине (например: было 3.4.7.1.9.11. стало 11,9,7,4,3,1)

    Нужно чтобы сортировка занимала максимально короткий срок, даже если там 9 -10 млн цифр.

    Заранее спасибо за помощь
     
  2. diki_01

    diki_01 Member

    Joined:
    18 Jan 2013
    Messages:
    18
    Likes Received:
    5
    Reputations:
    0
    Быстрая сортировка
    Code:
    var a:array[1..10] of integer; { массив элементов }
        n:integer;
    
    procedure QuickSort( L, R : Integer ); { Быстрая сортировка массива A[] }
    var i,j,x,y : integer;
    begin
      i := l; j := r;
      x := a[(l+r) div 2];
      repeat
        while (A[i] < x) do inc(i);
        while (x < A[j]) do dec(j);
        if ( i <= j ) then
        begin
          y:=A[i]; a[i]:=a[j]; a[j]:=y;
          inc(i); dec(j);
        end;
      until (i > j);
      if (l < j) then QuickSort(l,j);
      if (i < r) then QuickSort(i,r);
    end;
    
    begin
         writeln('введите 10 элементов массива:');
         for n:=1 to 10 do readln(a[n]);
         QuickSort( 1, 10 ); { на входе: левая и правая граница сортировки }
         writeln('после сортировки:');
         for n:=1 to 10 do writeln(a[n]);
    end.