我需要按排序顺序打印我的最终数组元素 我已经制作了一组三个元素,我找到了该组中最大的元素。我需要按排序顺序显示列表。
这是我的代码的相关部分:
#define MAX 9
void display(); //Display the element of array
int array[MAX]; //Array for Storing MAX element
//Function for displaying elements
void display()
{
int read_counter;
for(read_counter = 0; read_counter < MAX; read_counter++)
{
printf("\n Elements are %d\t",array[read_counter]);
}
}
如何排序和打印array
的元素?
答案 0 :(得分:3)
您可以qsort使用compare
功能:
int compare (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
然后在打印前使用它对数组进行排序:
qsort (array, 3, sizeof(int), compare);
如果您正在处理非常大的或非常小的号码而且害怕出现溢出情况,请改用此compare
方法:
int compare(const void* a, const void* b)
{
int va = *(const int*) a;
int vb = *(const int*) b;
return (va > vb) - (va < vb);
}
答案 1 :(得分:0)
您需要对数组进行排序,然后再显示它。
如果您不希望更改实际数组,可以将排序后的数组保存在中间临时数组中。
做类似的事情:
#define MAX 9
void display(); //Display the element of array
int array[MAX]; //Array for Storing MAX element
//Function for displaying elements
void display()
{
int min,i,j,tempArray[MAX],temp;
//copy into temporary array
for(i=0;i<MAX;i++)
tempArray[i] = array[i];
//sort temporary array (basic selection sort)
for(i=0;i<MAX-1;i++)
{
min = i;
for(j=i+1;j<MAX;j++)
{
if(tempArray[min] > tempArray[j] )
{
min = j;
}
//swap min with current if current is not already min
if(i != min)
{
temp = tempArray[i];
tempArray[i] = tempArray[min];
tempArray[min] = temp;
}
}
}
int read_counter;
for(read_counter = 0; read_counter < MAX; read_counter++)
{
printf("\n Elements are %d\t",tempArray[read_counter]);
}
}