C语言使用指针实现选择法排序。

#include<stdio.h>intmain(){inti,k,a,j,s=0,b,t;int*p=&a;int*q=&b;for(i=0;i<5;i++){scan... #include<stdio.h>
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();
}
不知道该怎么改呢。
展开
 我来答
问明6E
高粉答主

2019-06-04 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:16.1万
展开全部

#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");

xoaxa
2013-12-03 · TA获得超过8613个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3943万
展开全部

/*

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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
eiilpux17
推荐于2017-10-13 · TA获得超过802个赞
知道小有建树答主
回答量:424
采纳率:0%
帮助的人:432万
展开全部
#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位进行替换。

你的数组与指针概念仍需要多多理解

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创作者eVadxZ8vOQ
2019-12-02 · TA获得超过4079个赞
知道大有可为答主
回答量:3093
采纳率:33%
帮助的人:188万
展开全部
#include
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位进行替换。
你的数组与指针概念仍需要多多理解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1319779047000
推荐于2018-01-18 · TA获得超过1297个赞
知道答主
回答量:120
采纳率:0%
帮助的人:10.2万
展开全部
int selection sort(int[a],int [b]);
{
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( );
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式