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

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

12.12.2016, 21:57. Просмотров 476. Ответов 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 минуты
Быстрая сортировка
Почему не работает,не могу понять
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
Ответы с готовыми решениями:

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

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

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

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

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

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

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

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

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


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

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

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