inv函数里问题很多:
1.p是啥?i是啥?
2.t1=arr+k;//t1是int,而arr+k是int *指针
3.arr+k和arr+n-1也不能作为左值
参考别人的选择排序:
/* 版本一 */
#include
#include
void swap(int*a,int*b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void select_sort(int A[],int n)
{
register int i,j,min,m;
for(i=0;i
{
min=i;//查找最小值
for(j=i+1;j
{
if(A[min]>A[j])
{
min=j;
}
}
if(min!=i)
{
swap(&A[min],&A[i]);
printf("第%d趟排序结果为:\n",i+1);
for(m=0;m
{
if(m>0)
{
printf("");
}
printf("%d",A[m]);
}
printf("\n");
}
}
}
int main(void)
{
int n;
while(scanf("%d",&n)!=EOF) /* VS2013等版本中需使用scanf_s(),VC6.0中使用scanf() */
{
int i;
int*A=(int*)malloc(sizeof(int)*n);
for(i=0;i
{
scanf("%d",&A[i]);
}
select_sort(A,n);
printf("最终排序结果为:\n");
for(i=0;i
{
if(i>0){
printf("");
}
printf("%d",A[i]);
}
printf("\n");
}
return 0;
}
/* 版本二 */
#include
#include
#define MAX_SIZE 101
#define SWAP(x, y, t) ((t) = (x), (x) = (y), (y) = (t))
void sort(int[], int); /* selection sort */
void main(void)
{
int i, n;
int list[MAX_SIZE];
printf("Enter the number of numbers to generate: ");
scanf_s("%d", &n);
if (n MAX_SIZE){
fprintf(stderr, "Improper value of n\n");
exit(1);
}
for (i = 0; i
list[i] = rand() * 1000;
printf("%d ", list[i]);
}
sort(list, n);
printf("\n Sorted array:\n");
for (i = 0; i
printf("%d ", list[i]);
printf("\n");
}
void sort(int list[], int n)
{
int i, j, min, temp;
for (i = 0; i
min = i;
for (j = i + 1; j
if (list[j]
min = j;
SWAP(list[i], list[min], temp);
}
}