Есть совсем простой helloworld:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void fill_array(int *arr, int border);
void display_array(const int *arr, int border);
void shiffle(int *arr, int border);
void swap(int *arr, int a, int b);
void bubble_sort(int *arr, int border);
void fill_array(int *arr, int border) {
for(int i=0; i<border; ++i) {
arr[i] = i;
}
}
void display_array(const int *arr, int border) {
for(int i=0; i<border; ++i) {
printf("%3d", arr[i]);
}
printf("\n");
}
void shiffle(int *arr, int border) {
srand(time(NULL));
for(int elem=border-1; elem>0; --elem) {
int pos = rand() % (elem+1);
swap(arr, arr[elem], arr[pos]);
}
}
void swap(int *arr, int a, int b) {
int tmp = arr[a];
arr[a] = arr[b];
arr[b] = tmp;
}
void bubble_sort(int *arr, int border) {
for(int i=0; i<border-2; ++i) {
for(int j=0; j<border-2; ++j) {
int nxt=j+1;
if(arr[j]>arr[nxt]) {
swap(arr, arr[j], arr[nxt]);
}
}
display_array(arr, border);
}
}
int main() {
const int border=20;
int arr[20] = {0};
fill_array(arr, border);
display_array(arr, border);
shiffle(arr, border);
display_array(arr, border);
bubble_sort(arr, border);
display_array(arr, border);
return 0;
}
только вывод немного странный
$ ./bubble_sort
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
9 6 3 8 18 7 2 0 13 5 15 16 1 4 19 14 11 17 12 10
17 11 4 5 18 7 10 12 13 2 15 16 1 3 8 14 6 9 0 19
17 0 15 5 3 7 8 2 13 11 4 18 6 1 10 14 9 16 12 19
16 8 13 7 14 5 0 2 15 12 4 17 6 1 10 18 9 3 11 19
11 8 3 7 14 10 13 1 9 12 16 17 6 2 5 4 15 0 18 19
6 2 3 17 15 16 13 1 9 12 0 7 11 8 10 4 14 5 18 19
11 14 13 2 4 0 1 3 9 12 16 7 6 8 10 5 17 15 18 19
4 14 10 13 11 2 17 1 0 12 16 7 6 9 8 5 3 15 18 19
8 4 3 13 11 9 17 1 6 12 15 10 0 7 16 5 2 14 18 19
5 8 3 6 16 9 17 10 11 7 15 1 0 12 2 14 13 4 18 19
15 5 0 11 16 9 4 2 6 13 17 1 3 12 10 14 7 8 18 19
14 8 7 11 0 12 4 2 6 9 3 1 17 15 10 16 13 5 18 19
6 16 3 11 17 15 4 9 2 10 7 14 0 12 1 8 13 5 18 19
1 16 10 13 5 15 0 9 2 3 7 8 4 12 6 17 11 14 18 19
17 3 16 13 5 12 4 9 8 10 11 2 1 15 6 0 7 14 18 19
17 0 2 14 9 7 4 5 8 10 11 16 6 15 12 1 3 13 18 19
13 0 2 14 16 7 3 9 5 8 1 12 6 15 10 11 4 17 18 19
15 5 2 4 16 10 6 13 0 12 1 8 3 14 7 11 9 17 18 19
1 3 9 4 8 7 6 13 11 12 15 14 5 16 2 10 0 17 18 19
1 3 9 4 8 7 6 13 11 12 15 14 5 16 2 10 0 17 18 19
$ uname -a
OpenBSD lexx.my.domain 7.8 GENERIC.MP#1 amd64
Скажите где я дурак, или пните в нужную сторону. Заранее благодарю.




