Files
C/DeitelC/Chapter7/bubbleSort.c
2025-08-19 03:01:51 +03:00

64 lines
1.1 KiB
C

#include <stdio.h>
#define SIZE 10
void bubbleSort(int a[], size_t size, int(*compare)(int i1, int i2));
int asc(int i1, int i2);
int des(int i1, int i2);
int main (void)
{
int nums[SIZE] = {2, 4, 6, 11, 123, 1000, 3, 42, 90, 1};
puts("Nums are ready asc or desc ? (asc: 0/des: 1)");
int order = 0;
scanf("%d", &order);
puts("Orginal list: ");
for(size_t i = 0; i < SIZE; ++i) {
printf(" %d,", nums[i]);
}
puts("");
if(order) {
// des sort
bubbleSort(nums, SIZE, des);
puts("In Descending Order: ");
} else {
bubbleSort(nums, SIZE, asc);
puts("In Ascending Order: ");
}
for(size_t i = 0; i < SIZE; ++i) {
printf(" %d,", nums[i]);
}
puts("");
return 0;
}
void bubbleSort(int a[], size_t size, int(*compare)(int i1, int i2)) {
void swap(int *iS1, int *iS2);
for(size_t pass = 0; pass < SIZE - 1; ++pass) {
for(size_t count = 0; count < SIZE - 1; ++count) {
if((*compare)(a[count], a[count + 1])) {
swap(&a[count], &a[count + 1]);
}
}
}
}
void swap(int *iS1, int *iS2) {
int temp = *iS1;
*iS1 = *iS2;
*iS2 = temp;
}
int asc(int i1, int i2) {
return i2 < i1;
}
int des(int i1, int i2) {
return i1 < i2;
}