Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Вероника99
5 / 5 / 5
Регистрация: 16.12.2013
Сообщений: 461
#1

Пример быстрой сортировки массива строк и сортировки методом выбора - C++

12.12.2016, 21:57. Просмотров 420. Ответов 1
Метки нет (Все метки)

Добрый вечер. Скиньте пожалуйста пример быстрой сортировки массива строк и сортировки массива строк методом выбора. Очень срочно надо, спасибо
C++
1
2
3
4
5
6
7
8
9
10
11
char str_sorted[SIZE][LENGTH]; 
    char** str=(char**) malloc(sizeof(char *)* size); //Creating required string stray
    printf("\nEnter strings ");
    int i;
    for(i=0;i<size;i++)
    {
        str[i]=(char*)malloc(sizeof(char)*LENGTH);
        printf("\nEnter string: ");
        scanf("%s",str[i]); 
 
    }
Добавлено через 5 минут
Выбором:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void choicesSort (char str_sorted[SIZE][LENGTH]) //сорт
{ 
  int i, j, k; 
  char temp; 
 
  for (i = 0; i < SIZE; i++) { 
   for (j = 0; str_sorted[i][j] != '\0'; j++) { 
    for (k = j + 1; str_sorted[i][k] != '\0'; k++) 
     if (str_sorted[i][j] > str_sorted[i][k]) { 
      temp = str_sorted[i][j]; 
      str_sorted[i][j] = str_sorted[i][k]; 
      str_sorted[i][k] = temp; 
     } 
   } 
  } 
   
  return; 
}
Добавлено через 2 часа 33 минуты
http://www.cyberforum.ru/cpp-beginners/thread2114631.html
Быстрая сортировка
Почему не работает,не могу понять
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
void QuickSort_alpha(char *mas[], int left, int right) //швидке сортування
{   
        int i, j, p;
        char *tmp[SIZE];
    i=left; 
    j=right;        
    while (i!=j){
        if((strcmp(mas[i],mas[j])>0)!=(i>j)){       
                        tmp[i]=mas[i];      
            mas[i]=mas[j];
                mas[j]=tmp[i];
            
            p=i;    
            i=j;        
          
            if (p<j)    
                              j=p+1;
            else j=p-1;
        }else{
            if (i<j) j--; 
        else j++;
        };
    };
    
    if (left<i-1)
        QuickSort_alpha(mas,left,i-1);
    if (i+1<right) 
        QuickSort_alpha(mas,i+1,right);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2016, 21:57
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Пример быстрой сортировки массива строк и сортировки методом выбора (C++):

Отсортировать методом быстрой сортировки элементы массива, стоящие на четных позициях
Имеется одномерный массив длиной N = 50. Отсортировать методом быстрой...

Составить программу сортировки одномерного числового массива от начала массива к элементу с заданным номером по убыванию (методом выбора)
Помогите составить программу на С++. Заданный номер - 28.

Сортировка последовательности методом быстрой сортировки
помогите :Написати програму для сортування послідовності 45 37 2 5 9 12 6 4 52...

Сортировка координат (методом быстрой сортировки)
Как отсортировать координаты сначала по x, а при равных x по y, методом быстрой...

Алгоритмом быстрой сортировки строк
Необходимо отсортировать дату,она же char, по возрастанию. void...

1
MyNameRayhorn
0 / 0 / 0
Регистрация: 22.08.2015
Сообщений: 4
06.04.2017, 12:39 #2
Привет, в строках 9-11, там где быстрая сортировка, нужно вставить :
C
1
2
3
strcpy(tmp, strings[i]); 
strcpy(strings[i], strings[j]);
strcpy(strings[j], tmp);
Я недавно сдавал лабораторуную по чтению массива строк из файла, и его последующей сортировке, пользуйтесь:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <stdio.h>
#include <string.h>
#include <conio.h>
 
char strings[10][32], str[32];
 
void quickSort(int left, int right) 
{
    int i, j, p;
    i=left; 
    j=right;   
    char tmp[100];
         
    while (i!=j){
        if((strcmp(strings[i],strings[j])>0)!=(i<j))
        {        
            strcpy(tmp, strings[i]); 
            strcpy(strings[i], strings[j]);
            strcpy(strings[j], tmp);
            
            p=i;    
            i=j;        
          
            if (p<j)    
                j=p+1;
            else j=p-1;
        }
        else
        {
            if (i<j) j--; 
            else j++;
        };
    };
    
    if (left<i-1)
        quickSort(left,i-1);
    if (i+1<right) 
        quickSort(i+1,right);
}
 
int main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    FILE *f;
    int count = 0, i, j;
    if((f = fopen ("input.txt", "r")) == NULL){
        return 1;
    }
     
    while (feof(f) == 0 )
    {
        fgets (str,sizeof(str),f);
        strcpy(strings[count++], str);
    }
    fclose(f);
    
    for(i = 0; i < count; i++)
        printf("%s", strings[i]);  
    printf("\n");
    printf("\n");
    
    quickSort(0, count);
    
    for(i = 0; i < count + 1; i++)
    {
        printf("%s", strings[i]);
    }
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2017, 12:39
Привет! Вот еще темы с решениями:

Комбинированный метод быстрой сортировки с методом «пузырька»
Выполнить сортировку целочисленного массива (поиск в массиве) из n элементов....

Динамический массив отсортировать по возростанию методом быстрой сортировки
Отсортировать дин. масив по возростанию методом быстрой сортировки.

Вычислить глубину рекурсии быстрой сортировки методом Хоара
Здраствуйте! Мне нужно вычислить глубину рекурсии алгоритма быстрой...

Заполнить массив случайными числами и отсортировать его методом быстрой сортировки по убыванию
Написать программу на с++ которая заполняет массив случайными числами и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru