Другие языки программирования и технологии

Сортировка методом пузырька. Си.

Не могу добиться от программы правильной работы со случайно сгенерированными числами любого интервала (от 0 до 10 все норм) .
Сама задача: сортировка матрицы методом пузырька.
Помогите плз!

#include <stdio.h>
#include <stdlib.h>
#define n 10

int main()
{
int a[n][n],i,j,smena,x,m,p;
srand(time(NULL));
x=0;
m=0;

//заполнение матрицы случайными элементами.
printf("sgenerirovannaya matritsa\n\n\n");
for(i=0;i<n;i++)>[j]=rand();
printf("%d\t",a[j]);
}
printf("\n");
}

//замена методом пузырькa.Повторение цикла n^2-1 раз.
for (p=0;p<(n*n-1);p++)
{
for(i=0;i<n;i++)>[j]>a[j+1])
{
if (j!=9)
{ smena=a[j];
a[j]=a[j+1];
a[j+1]=smena;
x++;}

else{ smena=a[j];
a[j]=a[i+1][0];
a[i+1][0]=smena;
x++;}

}
}
}
}

//вывод колличества прогонов цикла.

printf("\n");printf("\n");
printf("poluchennaya matriza\n");
printf("\n");printf("\n");

//вывод матрицы на печать
for(i=0;i<n;i++)>[j]);
}
printf("\n");
}

printf("\nobshee kollichestvo zamen=%d\n",x);
system("pause");

return 0;
}
Так что ль?

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <locale.h>
#define N 10
int main() {
    int a[N][N], n, m, k, temp;
    srand((unsigned)time(NULL));
    setlocale(LC_CTYPE, "Russian_Russia.1251");
    for (n = 0; n < N; n++)
        for (m = 0; m < N; m++)
            a[n][m] = rand() % 11;
    printf("\tИсходная матрица 10 х 10:\n\n");
    for (n = 0; n < N; n++, printf("\n"))
        for (m = 0; m < N; m++)
            printf("%4i", a[n][m]);
    printf("\n\tОтсортированная матрица: \n\n");
    for (n = 0; n < N; n++) {
        for (m = 1; m < N; m++) {
            for (k = 0; k < N - m; k++) {
                if (a[n][k] > a[n][k + 1]) {
                    temp = a[n][k];
                    a[n][k] = a[n][k + 1];
                    a[n][k + 1] = temp;
                }
            }
        }
    }
    for (n = 0; n < N; n++, printf("\n"))
        for (m = 0; m < N; m++)
            printf("%4i", a[n][m]);
    _getch();
    return 0;
}
Алексей Иванов
Алексей Иванов
83 613
Лучший ответ
Поменяй

if (j!=9)

на

if (a[j] > a[j+1])
Делал что-то подобное, но с чтением из файла. Держи, поможет чем:

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
const int n = 5;
int a[n];
ifstream f("file.txt");
for (int i = 0; i < n; ++i)
{
f >> a;
cout << a << endl;
}
// soring
for (int i = n - 1; i >= 1; --i)
for (int j = 0; j < i; ++j)
{
if (a[j] > a[j + 1])
{
int foo = a[j];
a[j] = a[j + 1];
a[j + 1] = foo;
}
}
cout << endl;
for (int i = 0; i < n; ++i)
cout << a << endl;
}

Похожие вопросы