這是一個程序,其中一組數字按升序排序,方法是找到數組左端點和末端之間的最大數字,然後將該元素移入正確的索引位置通過切換元素。我的問題是它不是按升序排列,因爲它們之間的數字沒有得到排序,我想知道如何在程序中使用它。 這是我的時刻代碼:選擇排序程序C
#include <stdio.h> /* Library inclusions */
#include "genlib.h"
#include "simpio.h"
#define size 7 /* Constants */
void sortArray (int numbers[]); /* prototypes */
int indexMax (int numbers[], int low, int high);
void swap (int numbers[], int loc, int loc1);
void getArray (int numbers[]);
void displayArray (int numbers[]);
main()
{
int numbers[size];
getArray(numbers);
sortArray(numbers);
displayArray (numbers);
getchar();
}
void getArray (int numbers[]) /*Function getArray*/
{
int i;
for (i=0; i<size; i++)
{
printf ("Enter an integer? ");
numbers[i]=GetInteger();
}
}
void displayArray (int numbers[]) /*Function displayArray*/
{
int i;
printf ("\n The sorted list is: \n");
for (i=0; i< size; i++)
{
printf ("%d\t", numbers[i]);
}
}
void sortArray (int numbers[]) /*Function sortArray*/
{
int i , maxInd;
for (i=0; i<size;i++)
{
maxInd = indexMax (numbers, i, size-1);
swap (numbers, size-1, maxInd);
}
}
int indexMax (int numbers[], int low, int high) /*Function indexMax*/
{
int i, maxInd;
maxInd=high;
for (i=low;i<=high;i++)
{
if (numbers[i]>numbers[maxInd])
{
maxInd =i;
}
}
return (maxInd);
}
void swap (int numbers[], int loc, int loc1) /*Function swap*/
{
int temp;
temp=numbers[loc];
numbers[loc]=numbers[loc1];
numbers[loc1]=temp;
}
非常感謝你。 :)
今天作出承諾:一旦你不是初學者,你會改變你的顯示名稱。 – devnull
您是否嘗試過逐行調試程序中的代碼,以幫助您查看可能出現的問題?做一個小陣列,這樣不會花費很長時間。 –