![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 28.04.2010
Сообщений: 5
|
![]()
Проблема с сортировкой пузырька, не выводит правельный результат.
И просмотрите сортировку Шелла,тоже проблемы . Ввожу первый раз 4,3,2,1 а вывод 1,3,2,4 а после второго раза прохождения всё нормально. #include<stdio.h> #include<conio.h> #include<windows.h> #include<string.h> #include<iostream.h> char s[100]; int *p; int menu() { system("cls"); int a; strcpy(s,"****** MENU ******");CharToOem(s,s);printf("%s \n",s); strcpy(s,"1. Ввод массивов");CharToOem(s,s);printf("% s \n",s); strcpy(s,"2. Сортировка");CharToOem(s,s);printf( "%s \n",s); strcpy(s,"3. Вывод массива");CharToOem(s,s);printf("%s \n",s); strcpy(s,"0. Выход");CharToOem(s,s);printf("%s \n",s); strcpy(s," Сделайте свой выбор");CharToOem(s,s);printf("%s ",s); scanf("%d",&a); return a; } int menu_1() { system("cls"); int a; strcpy(s,"Сортировка");CharToOem(s, s);printf("%s \n",s); strcpy(s,"1.Пузырьком");CharToOem(s ,s);printf("%s \n",s); strcpy(s,"2.Методом выбора");CharToOem(s,s);printf("%s \n",s); strcpy(s,"3.Методом вставки");CharToOem(s,s);printf("%s \n",s); strcpy(s,"4.Методом Шелла");CharToOem(s,s);printf("%s \n",s); strcpy(s,"5.Методом Холла");CharToOem(s,s);printf("%s \n",s); strcpy(s,"0. Выход");CharToOem(s,s);printf("%s \n",s); strcpy(s," Сделайте свой выбор");CharToOem(s,s);printf("%s ",s); scanf("%d",&a); return a; } int The_size_of_a_file() { int length_1; system("cls"); strcpy(s,"Введите размер массива ARRAY_1");CharToOem(s,s);printf("%s \n",s); scanf("%d",&length_1); getch(); return length_1; } int function_2(int number) { int i; strcpy(s,"Ввод элементов массива ARRAY_1 через rand");CharToOem(s,s);printf("%s \n",s); p=new int[number]; if(p==NULL){ exit(1); } strcpy(s,"Ввод элементов массива");CharToOem(s,s);printf("%s \n",s); for(i=0;i<number;i++){ printf("[%d]=",i); fflush(stdin); scanf("%d",(p+i)); printf("%d",&p[i]); } getch(); return 0; } void swap(int*x,int*y) { int t; t=*x; *x=*y; *y=t; } СОРТИРОВКА ПУЗЫРЬКОМ!!!!! int bubble(int number) { int temp; strcpy(s,"1.Сортировка Пузырьком");CharToOem(s,s);printf(" %s \n",s); int i,j; for(i=0;i<number;i++) for(j=i;j<number;j++) if(*(p+j)>*(p+j+1)) { // temp=p[j]; // p[j]=p[j+1]; // p[j+1]=temp; swap((p+j),(p+j+1)); } strcpy(s,"Выполнена");CharToOem(s,s );printf("%s \n",s); strcpy(s,"Вывод массива");CharToOem(s,s);printf("%s \n",s); for(j=0;j<number;j++){ printf("%3d ",p[j]); } getch(); return 0; } int min_sort(int number) { strcpy(s,"Сортировка выбором");CharToOem(s,s);printf("%s \n",s); int i,j,k; int e; int min; for(i=0;i<number;i++) { e=0; k=i; min=p[i]; for(j=i+1;j<number;j++){ if(p[j]<min) { k=j; min=p[j]; e=1; } } if(e) { p[k]=p[i]; p[i]=min; } } getch(); return 0; } int insert_sort(int number) { strcpy(s,"Сортировка");CharToOem(s, s);printf("%s \n",s); int i,j; int min; for(i=1;i<number;i++){ min=p[i]; for(j=i-1;(j>=0)&&(min<p[j]);j--) p[j+1]=p[j]; p[j+1]=min; } getch(); return 0; } int shell_sort(int number) { strcpy(s,"Сортировка");CharToOem(s, s);printf("%s \n",s); int i,j,k,gap,x,*a; a=p; for(k=0;k<number;k++){ gap=a[k]; for(i=gap;i<number;i++) { x=p[i]; for(j=i-gap;(x<p[j])&&(j>=0);j=j-gap){ p[j+gap]=p[j];} p[j+gap]=x; } } getch(); return 0; } int holla_sort(int number) { strcpy(s,"Сортировка");CharToOem(s, s);printf("%s \n",s); int i,j,x,y,left=0,right=number-1; i=left; y=right; x=p[(left+right)/2]; do{ while((p[i]<x)&&(i<right)) i++; while((x<p[j])&&(j>left)) j--; if(i<=j){ y=p[i]; p[i]=p[j]; p[j]=y; i++; y--; } }while(i<=j); // if(left<j) getch(); return 0; } int function_16(int number) { int i; strcpy(s,"Вывод массива");CharToOem(s,s);printf("%s \n",s); for(i=0;i<number;i++){ printf("%3d ", p[i]); } getch(); return 0; } void main() { int b,b1,number; do { system("cls"); b=menu(); switch(b) { case 1: number=The_size_of_a_file(); function_2(number); break; case 2: do { system("cls"); b1=menu_1(); switch(b1) { case 1: bubble(number); break; case 2: min_sort(number); break; case 3: insert_sort(number); break; case 4: shell_sort(number); break; case 5: holla_sort(number); break; case 0: break; } } while(b1!=0); break; case 3: function_16(number); break; case 0: exit(0); break; default: strcpy(s,"Неправельны ввод");CharToOem(s,s);printf("%s \n",s); getch(); break; }} while(b!=0); getch(); } |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сортировка Шелла и Шейкер-сортировка | AleksandrMakarov | Паскаль, Turbo Pascal, PascalABC.NET | 11 | 11.03.2012 12:18 |
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца | немозг | Помощь студентам | 11 | 06.02.2010 21:57 |
Сортировка методом линейного выбора и "быстрая" сортировка | Карол | Помощь студентам | 4 | 27.09.2009 19:52 |
Сортировка файлов в Explorer vs сортировка в Delphi | mutabor | Общие вопросы Delphi | 11 | 04.09.2009 14:32 |