
C语言使用指针实现选择法排序。
int main()
{
int i,k,a,j,s=0,b,t;
int *p=&a;
int *q=&b;
for(i=0;i<5;i++){
scanf("%d",p++);
}
p=&a;
for(j=5;j>0;j--){
for(k=0;k<5;k++){
if(b<=*(p+k)){
b=*(p+k);
}
}
}
q=&b;
for(t=0;t<5;t++)
printf(" %d",*(q+t));
getchar();
getchar();
}
不知道该怎么改呢。 展开
#include<stdio.h>
voidprint_result(float*,int);
voidSelect_Sort(float*,int);
intmain()
{
inti;
floatarray[10];
float*pointer;
printf("请输入10个数:\n");
for(i=0;i<10;i++)
{
scanf("%f",&array[i]);
}
pointer=array;
Select_Sort(pointer,10);
print_result(pointer,10);
return0;
}
voidprint_result(float*p,intn)
{//输出结果
intk;
for(k=0;k<n;k++)
{
printf("%g\t",*(p+k));
}
}
voidSelect_Sort(float*pt,intn)
{//全用指针的选择排序法
inti,j,k;
floattempnum;
for(i=0;i<n;i++){
k=i;
for(j=i+1;j<n;j++)
{
if(*(pt+j)>*(pt+i))
{
k=j;
}
}
tempnum=*(pt+i);
*(pt+i)=*(pt+k);
*(pt+k)=tempnum;
}
}
扩展资料:
其它方法:
voidSelectSort(intarr[],intn)
{
printf("\n选择排序法过程:\n");
inti,j,k,l,t;
for(i=0;i<n;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(arr[j]<arr[k])
{
k=j;
}
}
if(k!=i)
{
t=arr[i];arr[i]=arr[k];arr[k]=t;
}
for(l=0;l<n;l++)
{
printf("%3c",arr[l]);
}
printf("\n");
}
}
/*
65 45 85 25 95
25 45 65 85 95
Press any key to continue
*/
#include <stdio.h>
#define N 5
int main() {
int t,a[N];
int *p,*q,*k;
for(t = 0;t < N;++t)
scanf("%d",&a[t]);
for(p = a; p < a + N - 1;++p) {
k = p;
for(q = p + 1;q < a + N;++q) {
if(*k > *q) k = q;
}
if(p != k) {
t = *p;
*p = *k;
*k = t;
}
}
for(t = 0; t < N; ++t)
printf("%d ",*(a + t));
printf("\n");
return 0;
}
#include<stdio.h>
int main()
{
int i,k,a[5],j,s=0,b,t;
int *p=a;
for(i=0;i<5;i++){
scanf("%d",p++);
}
p=a;
for(j=4;j>=0;j--)
{
t=0;
for(k=1;k<=j;k++){
if(*(p+t)>=*(p+k))
t=k;
}
b=*(p+t);
*(p+t)=*(p+j);
*(p+j)=b;
}
p=a;
for(i=0;i<5;i++)
printf(" %d",*(p+i));
getchar();
getchar();
}
所谓的选择排序法,是从N个中选择一个最小(或最大)的与第i位进行替换,i在整个循环中递增。下一次则从剩余的数中在选取一个最小(或最大)的与第i+1位进行替换。
你的数组与指针概念仍需要多多理解
int main()
{
int i,k,a[5],j,s=0,b,t;
int *p=a;
for(i=0;i<5;i++){
scanf("%d",p++);
}
p=a;
for(j=4;j>=0;j--)
{
t=0;
for(k=1;k<=j;k++){
if(*(p+t)>=*(p+k))
t=k;
}
b=*(p+t);
*(p+t)=*(p+j);
*(p+j)=b;
}
p=a;
for(i=0;i<5;i++)
printf(" %d",*(p+i));
getchar();
getchar();
}所谓的选择排序法,是从N个中选择一个最小(或最大)的与第i位进行替换,i在整个循环中递增。下一次则从剩余的数中在选取一个最小(或最大)的与第i+1位进行替换。
你的数组与指针概念仍需要多多理解
{
for(int i=0;i<b;i++)
{
int mix=0
for(int j=i+1;j<a;j++)
}
if(a[mix]>a[j])
mix=j;
{
int temp=a[mix];
a[mix]=a[i];
a[i]=temp;
}
return 0
}
viod main()
{
int a[]={" "}
int b= ;
int c[]=(a,b);
printf( );
}