有些简单的东西不用指针,用了有时反而会错
你所需要的网站建设服务,我们均能行业靠前的水平为你提供.标准是产品质量的保证,主要从事成都网站建设、做网站、企业网站建设、手机网站开发、网页设计、成都品牌网站建设、网页制作、做网站、建网站。成都创新互联公司拥有实力坚强的技术研发团队及素养的视觉设计专才。
这是我以前写的
#include stdio.h
int main()
{
int i,j,x[100],y=0,a;
printf("请输入数字数量:\n");
scanf("%d",a);
printf("请输入各个数字:\n");
for(i=0;ia;i++)
{
scanf("%d",x[i]);
}
printf("\n");
//输入
for(j=1;j=(a-1);j++)
{
for(i=0;i(a-j);i++)
{
if(x[i]x[(i+1)])
{
y=x[(i+1)];
x[(i+1)]=x[i];
x[i]=y;
}
}
}
//冒泡排序
for(i=(a-1);i=0;i--)
{
printf("%d",x[i]);
}
printf("\b\n");
for(i=0;ia;i++)
{
printf("%d",x[i]);
}
printf("\b ");
//输出
return 0;
}
#include "stdio.h"
int main()
{
int i,j;
int a[12];
for(i=1; i=10; ++i)
scanf("%d",a[i]);
for(i=1; i10; ++i)
for(j=i; j=10; ++j)
if(a[i]a[j])
{
int t=a[i];
a[i]=a[j];
a[j]=t;
}
//前十个数的排序
for(i=1; i=10; ++i)
printf("%d ",a[i]);
printf("\n");
printf("Input a new number: ");
scanf("%d",a[11]);
for(i=10; i0; --i)
if(a[i+1]a[i])
{
int t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
else break;
//11个数的排序
for(i=1;i=11; ++i)
printf("%d ",a[i]);
printf("\n");
return 0;
}
#include stdio.h
void func(int *a)
{
int i,j,temp;
for(j=0;j=7;j++)
{
for (i=0;i7-j;i++)
if (a[i]a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
int main()
{
int a[8]={8,7,6,5,4,3,2,1};
func(a);
for(int i=0;i8;i++)
{
printf("%d ",a[i]);
}
return 0;
}
func就是功能函数实现数组a[8]的排序。
C语言将数组元素大小排序方法:
以下使用的是冒泡排序法实线数组从小到大排序。
思想:每次相邻两个数比较,若升序,则将大的数放到后面,一次循环过后,就会将最大的数放在最后。
10、2、3、4、5、6、9、8、7、1是输入的待排序的数列,经过第一次排序,将最大的,10放在最后,第二次排序,将剩下的2、3、4、5、6、9、8、7、1进行冒泡,将当前最大的9放在倒数第二的位置,以此类推。
以下是具体代码:
#include stdio.h
int main(){
int nums[10] = {10, 2, 3, 4, 5, 6, 9, 8, 7, 1};
int i, j, temp, isSorted;
//优化算法:最多进行 n-1 轮比较
for(i=0; i10-1; i++){
isSorted = 1; //假设剩下的元素已经排序好了
for(j=0; j10-1-i; j++){
if(nums[j] nums[j+1]){
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
isSorted = 0; //一旦需要交换数组元素,就说明剩下的元素没有排序好
}
}
if(isSorted) break; //如果没有发生交换,说明剩下的元素已经排序好了
}
for(i=0; i10; i++){
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
扩展资料:
其他将数组从小到大排序的算法
以下使用的是选择排序法实现数组从小到大排序。
思想:从第一个数开始,每次和后面剩余的数进行比较,若升序,则如果后边的数比当前数字小,进行交换,和后面的所有的数比较、交换后,就会将当前的最小值放在当前的位置
输入的序列为10、2、3、4、5、6、9、8、7、1进行一次排序后将最小的数放在了第一位(a[0]与它后面的所有数进行比较,若a[0]比后面的数大,进行交换),以此类推。
以下是具体代码:
#include stdio.h
int main(void){
int a[1001];
int n,i,j,t;
scanf("%d",n);//n为要排序的数的个数
//输入需要排序的数
for(i=0;in;++i)
scanf("%d",a+i);
//接下来进行排序
for(i=0;in-1;++i)//因为每次需要和a[i]后面的数进行比较,所以到a[n-2](倒数第2个元素)就行
{
for(j=i+1;jn;++j)//j从i后一个开始,a[i]与a[j]进行比较
{
if(a[i]a[j])//a[i]为当前值,若是比后面的a[j]大,进行交换
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}//每排序一次,就会将a[i](包括a[i])之后的最小值放在a[i]的位置
for(j=0;jn;++j)
printf("%-5d",a[j]);
printf("\n\n");
}
return 0;
}
#includestdio.h
void sort(float *a, int n)
{
int i,j,tmp;
for(i=0; in-1; i++)
for(j=0; jn-i-1; j++)
if(a[j]a[j+1])
{
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
void main()
{
float a[5];
int i;
printf("请输入五个数(逗号隔开):");
scanf("%f,%f,%f,%f,%f",a[0],a[1],a[2],a[3],a[4]);
sort(a,5);
printf("排序后为:");
for(i=0; i5; i++)
printf("%.2f ",a[i]);
printf("\n");
}
或者三个数的。
void sort(int *a, int *b, int *c)
{
int tmp;
if(*a*b){
tmp = *b;
*b = *a;
*a = tmp;
}
if(*a*c){
tmp = *c;
*c = *a;
*a = tmp;
}
if(*b*c){
tmp = *c;
*c = *b;
*b = tmp;
}
return;
}
扩展资料:
C语言中没有预置的sort函数。如果在C语言中,遇到有调用sort函数,就是自定义的一个函数,功能一般用于排序。
一、可以编写自己的sort函数。
如下函数为将整型数组从小到大排序。void sort(int *a, int l)//a为数组地址,l为数组长度。
{
int i, j;
int v; //排序主体
for(i = 0; i l - 1; i ++)
for(j = i+1; j l; j ++)
{
if(a[i] a[j])//如前面的比后面的大,则交换。
{
v = a[i];
a[i] = a[j];
a[j] = v;
}
}
}
对于这样的自定义sort函数,可以按照定义的规范来调用。
二、C语言有自有的qsort函数。
功 能: 使用快速排序例程进行排序。头文件:stdlib.h
原型:
void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));
参数:
1、待排序数组首地址。
2、数组中待排序元素数量。
3、各元素的占用空间大小4 指向函数的指针,用于确定排序的顺序,这个函数必须要自己写比较函数,即使要排序的元素是int,float一类的C语言基础类型。
includestdio.h
#includestdlib.h
main()
{
int a[10],i,j,t;
for(i=0;i10;i++)
scanf("%d",a[10]);
for(i=0;i9;i++)
{for(j=0;j9-i;j++)
{
if(a[j]a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
}
for(i=0;i10;i++)
printf("%d ",a[i]);
getch();
}
10个数