C'de Linear Sort With Counting

Eneroader

Centipat
Katılım
6 Mart 2020
Mesajlar
18
Merhabalar, sayıları düzgün sıralıyor fakat bir elemanı dizide bir tane olmasına rağmen 2 kere yazdırıyor.
Kodumun ve çıktısının ekran görüntüsünü paylaştım. Kodu da text olarak ekledim.

LinearSWCOUNT.PNG
linearoutput.PNG
 

Dosya Ekleri

  • LinearSortWithCounting.txt
    530 bayt · Görüntüleme: 45
Sırası hesaplananı yeni diziye yaz. Bir diziyi sayarken elemanları anlık olarak değiştiriyorsun. Arada sapıtıyor.
Benim gördüğüm bu.

24 ve 25. satırdaki b'leri a yapıp diğer türlüsünü de görebilirsin.
[CODE highlight="24, 25"]#include<stdio.h>
#define MAX 6

void printarr(int* a, int size) {
for(int i = 0; i < size; ++i) {
printf("%d ", a);
}

printf("\n");
}

void linearSortWithCounting(int* a, int* b, int size) {
int count = 0;

for(int i = 0; i < size; ++i) {
count = 0;

for(int j = 0; j < size; ++j) {
if(a > a[j]) {
++count;
}
}

b[count] = a;
printarr(b, MAX);
}
}

int main() {
int a[MAX] = { 0, 4, 2, 1, 6, 15 };
int b[MAX] = { 0 };

linearSortWithCounting(a, b, MAX);
printarr(b, MAX);

return 0;
}


[/CODE]
 
Sırası hesaplananı yeni diziye yaz. Bir diziyi sayarken elemanları anlık olarak değiştiriyorsun. Arada sapıtıyor.
Benim gördüğüm bu.

24 ve 25. satırdaki b'leri a yapıp diğer türlüsünü de görebilirsin.
[CODE highlight="24, 25"]#include<stdio.h>
#define MAX 6

void printarr(int* a, int size) {
for(int i = 0; i < size; ++i) {
printf("%d ", a);
}

printf("\n");
}

void linearSortWithCounting(int* a, int* b, int size) {
int count = 0;

for(int i = 0; i < size; ++i) {
count = 0;

for(int j = 0; j < size; ++j) {
if(a > a[j]) {
++count;
}
}

b[count] = a;
printarr(b, MAX);
}
}

int main() {
int a[MAX] = { 0, 4, 2, 1, 6, 15 };
int b[MAX] = { 0 };

linearSortWithCounting(a, b, MAX);
printarr(b, MAX);

return 0;
}


[/CODE]

Diziyle yapıldığını görmüştüm ama böyle de denemek istedim. Teşekkür ederim.
 

Yeni konular

Geri
Yukarı