C语言实现选择,冒泡,顺序排序
选择排序
#include<stdio.h>
#define N 6
int main()
{
int x[N]={5,0,1,6,4,3};
int temp,i,j,min;
// printf("请输入N个数字:");
// for(i=0;i<N;i++)
// scanf("%d",&x[i]);
for(i=0;i<N-1;i++)//控制趟数
{
min=i;//每一趟都需要需要一个最小的先假设xi是最小的那个数
for(j=i+1;j<N;j++)
if(x[min]>x[j])//找出最小的数
min=j;
if(i!=min)//如果找到的最小的这数不是xi。就交换
{
temp=x[i];
x[i]=x[min];
x[min]=temp;
}
}
printf("排序后的N个数字:");
for(i=0;i<N;i++)
printf("%5d",x[i]);
return 0;
}
冒泡排序
#include<stdio.h>
#define N 6
int main()
{
int x[N]={2,7,6,5,0,9},i,j,temp;
// printf("输入N个数据:");
// for(i=0;i<N;i++)
// scanf("%d/n",&x[i]);
for(i=0;i<(N-1);i++)//这里的i专门用来记录趟数
for(j=0;j<(N-i);j++)//每次比较以后大的在后面就不需要管最后一个数
{
if(x[j]>x[j+1])
{
temp=x[j];
x[j]=x[j+1];
x[j+1]=temp;
}
}
printf("排序后的结果:");
for(i=0;i<N;i++)
printf("%5d",x[i]);
return 0;
}
顺序排序
#include<stdio.h>
#define N 6
int main()
{
int x[N]={1,6,0,5,4,3};
int temp,i,j;
for(i=0;i<(N-1);i++)//n个数字比较n-1次
for(j=i+1;j<N;j++)//第n个数和第n+1个数比较,
//每次都比到最后一个数因为每次比较以后会把最小的数字仍在最前面
//所以用i来控制j的下移 ,并让第一个数和剩下的所有的数进行比较
{
if(x[i]>x[j])
{
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
}
for(i=0;i<N;i++)
printf("%5d",x[i]);
return 0;
}
整数转字符串
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
int num,n;
char *p,s[30];
//char *p,*s;//---->transfer2
char m[20]="-";
void transfer(char *s,int n);
//void transfer2(char *s,int n);
void reverse(char *s);
printf("请输入一个数字整数:");
scanf("%d",&num);
n=abs(num);
transfer(s,n);
reverse(s);
if(num<0)
p=strcat(m,s);//如果是复数就把s追加到m[0]是一个负号的一个字符串中;
else
p=s;
printf("整数%d转换为字符串是: %s",num,p);
return 0;
}
void transfer(char *s,int n)
{
//printf("transfer");
char *q;
int x;
q=s;
while(n>0)
{
x=n%10;
*q=x+'0';
q++;
n=n/10;
}
*q='\0';
//printf("asfaf");
}
void transfer2(char *q,int n)
{
//printf("transfer");
char *q;
int x;
while(n>0)
{
x=n%10;
*q=x+'0';
q++;
n=n/10;
}
*q='\0';
//printf("asfaf");
}
void reverse(char *s)
{
//printf("reverse");
char *h,*k,t;
for(h=s,k=s+strlen(s)-1;h<k;h++,k--)
{
t=*h;
*h=*k;
*k=t;
}
}
指向指针的指针和冒泡对二维数组
#include<stdio.h>
#define N 4
#define M 3
int main()
{
int a[M][N];
int i,j,k,t;
int **p,*pa[M];
printf("请输入矩阵元素:\n");
for(i=0;i<M;i++)
for(j=0;j<N;/+)
scanf("%d",&a[i][j]);
for(i=0;i<M;i++)//记录数组的每一行的元素
pa[i]=a[i];
p=pa;
for(k=0;k<M;k++,p++)
for(i=1;i<=N-1;i++)
for(j=0;j<N-i;j++)
if(*(*p+j)>*(*p+j+1))
{
t=*(*p+j);
*(*p+j)=*(*p+j+1);
*(*p+j+1)=t;
}
printf("排序后的矩阵是:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
return 0;
}