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: 68
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.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı