Προς το περιεχόμενο

Ταξινόμηση με quicksort;


katina

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα γνωρίζει κανένας πως μπορώ να κάνω ταξινόμηση με quicksort, εμφανίζοντας τη θέση του πίνακα και όχι την τιμή.

 

πχ. ενας μονοδιάστατος πίνακας έχει κιλά, αλλά εγώ θέλω να εμφανίσω ποια θέση του πίνακα έχει τα περισσότερα κιλά.

 

Ευχαριστώ πολύ

Δημοσ.

Αυτό δεν είναι ταξινόμηση, αλλά εύρεση μεγίστου. Βέβαια θα μπορούσες να κάνεις ταξινόμηση και ο μέγιστος να είναι είτε το πρώτο είτε το τελευταίο στοιχείο του πίνακα, ανάλογα την σειρά με την οποία ταξινομείς.

Δημοσ.

Καλησπέρα γνωρίζει κανένας πως μπορώ να κάνω ταξινόμηση με quicksort, εμφανίζοντας τη θέση του πίνακα και όχι την τιμή.

 

πχ. ενας μονοδιάστατος πίνακας έχει κιλά, αλλά εγώ θέλω να εμφανίσω ποια θέση του πίνακα έχει τα περισσότερα κιλά.

 

Ευχαριστώ πολύ

 

Θα συμφωνήσω με τον φίλο kagelos από εκεί και πέρα θα μπορούσε να γίνει με διάφορους τρόπους όπως:

 

>
/* qsort max, xdir */
#include <stdio.h>
#include <stdlib.h>

#define _ARR_LEN 12

int _fcmp(const void*, const void*);

int main(void)
{
int v[_ARR_LEN],
	m = 0,
	p;

/* Init. v with fixed-random values */
for(int i = 0; i < _ARR_LEN; i++)
{
	v[i] = rand() % 100;
	printf("[%.2d] %.3d\n", i, v[i]);
}

/* Find maximum (positive) value without QSort.. */
for(int i = 0; i < _ARR_LEN; i++)
	if(v[i] > m)
	{
		m = v[i];
		p = i; /* Track value array index */
	}
printf("\nMaximum element: %d at #%d\n", m, p);

/* Find maximum value with QSort.. */
qsort(v, _ARR_LEN, sizeof(int), _fcmp);
printf("Maximum element with qsort: %d at top of array\n", v[0]);


printf("\nPress enter to exit..");
getchar();

return 0;
}

int _fcmp(const void *a, const void *
{
/* qsort comparison function */
if(*(int*)a > *(int*)
	return -1; /* Move max values on top of array */
if(*(int*)a < *(int*)
	return 1;  /* Move min values to bottom of array */
return 0;
}

 

ΕΞΟΔΟΣ:

>
[00] 030
[01] 082
[02] 090
[03] 056
[04] 017
[05] 095
[06] 015
[07] 048
[08] 026
[09] 004
[10] 058
[11] 071

Maximum element: 95 at #5
Maximum element with qsort: 95 at top of array

Press enter to exit..

 

Καλή συνέχεια!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...