
正文
c语言指针选择排序法函数 c语言利用指针函数排序
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C语言指针选择法排序问题
#includestdio.h
void swaped(int *a,int *b)
{
*b=(*a)+(*b);
*a=(*b)-(*a);
*b=(*b)-(*a);
}
void main()
{
int i,*p1,*p2,*k,t,a[10];
//数据输入
for(p1=a;p1a+10;p1++) scanf("%d",p1);
//选择法排序(升序)
for (i=0,p2=a;p2a+9,i9;p2++,i++)
for (p1=a+i+1;p1a+10;p1++) if(*p2*p1) swaped(p2,p1);
//数据输出
for (p2=a;p2a+10;p2++) printf("%d ",*p2);
printf("\n");
}
相关问答
Q1: C语言使用指针实现选择法排序。
#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");
}
}
Q2: c语言用指针写选择法排序函数
你的程序没错,只不过这不是选择法,是冒泡发,选择发如下:
void sort(int *a,int n)
{
int i,j,t,temp;
for(i=0;in-1;i++)
{
t=i;/初始定义t为未排序数的第一个
for(j=i+1;jn;j++)
{
if(*(a+t)*(a+j))/挑选出更大的数的位置,把他赋给t
t=j;
}
temp=*(a+i); /t是最大的那个数的位置,把他和未排序的第一个交换位置
*(a+i)=*(a+t);
*(a+t)=temp;
}
}
main()
{
int i,a[10],*p=a;
printf("input zhe array a:\n");
for(i=0;i10;i++)
scanf("%d",p++);
printf("\n");
p=a;
sort(p,10);
p=a;
printf("zhe sort array is:\n");
for(i=0;i10;i++)
printf("%d,",a[i]);
getch();
}
Q3: c语言编程题 利用指针编写函数用选择法对整数数组排序(降序)。 求大神帮忙啊!!!谢谢
#includestdio.h
void Sort(int *a,int n) {
int *p,*q,*v,t;
for(p = a;p a + n - 1;++p) {
v = p;
for(q = p + 1; q a + n; ++q)
if(*v *q) v = q;
if(*p != *v) {
t = *p;
*p = *v;
*v = t;
}
}
}
void Show(int *a,int n) {
int i;
for(i = 0; i n; ++i)
printf("%d ",*(a + i));
printf("\n");
}
int main() {
int a[] = {23,12,54,89,66,59,57,48,91,20,31};
int n = sizeof(a)/sizeof(a[0]);
printf("排序前:\n");
Show(a,n);
printf("排序后:\n");
Sort(a,n);
Show(a,n);
return 0;
}
Q4: c语言如何用指针排列字符
#include stdio.h
#include string.h
void sort_str(char *str) { // 选择排序
//待补全部分
int i,j,k,t,len = strlen(str);
for(i = 0; i len - 1; ++i) {
k = i;
for(j = i + 1; j len; ++j) {
if(str[k] str[j])
k = j;
}
if(k != i) {
t = str[k];
str[k] = str[i];
str[i] = t;
}
}
}
int main() {
char str[101];
scanf("%s", str);
sort_str(str);//对字符串进行排序
printf("%s\n", str);
return 0;
}
Q5: C语言编程:用指向指针的指针的方法对n个整数排序并输出。
用指向指针的指针的方法对n个整数排序并输出的具体编程步骤如下:
1、编写头函数:#include stdio.h。
2、编写条件函数:
void sort(int **p,int n)
{
int i,j,temp;
for(i=0;in-1;i++)
for(j=0;jn-1-i;j++)
{
if(*p[j]*p[j+1])//或者是*(*(p+j))*(*(p+j+1))
{
temp=*p[j];
*p[j]=*p[j+1];
*p[j+1]=temp;
}
}
}
3、最后编写主函数:
int main()
{
void sort(int **,int );
int i,n,data[20],**p,*pstr[20];
scanf("%d",n);
for(i=0;in;i++)
pstr[i]=data[i];
for(i=0;in;i++)
scanf("%d",pstr[i]);
p=pstr;
sort(p,n);
for(i=0;in;i++)
printf("%d ",*pstr[i]);
return 0;
}
关于c语言指针选择排序法函数和c语言利用指针函数排序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







