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

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

12.12.2016, 21:57. Просмотров 2932. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2016, 21:57
Ответы с готовыми решениями:

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

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

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

Сравнить число перестановок при использовании сортировки "пузырьком", методом выбора и алгоритма быстрой сортировки
Напишите программу, которая сравнивает число перестановок элементов при использовании сортировки...

1
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2017, 12:39

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

Создать программу реализующую два алгоритма сортировки одномерного массива: методом Шелла и быстрой сортировки
ЗАДАЧА. Создать программу реализующую два алгоритма сортировки одномерного массива: сортировка...

Разработайте рекурсивную процедуру сортировки последовательности методом быстрой сортировки Хоара
Помогите!!!! Дана последовательность чисел a1, a2, ... , an. Разработайте рекурсивную процедуру...

Написать программу сортировки данных в массиве методом быстрой сортировки по возрастанию номеров маршрутов
Описать класс с именем Route, содержащий следующие поля: start (название начального пункта...

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


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

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

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