当前位置:首页 » 编程语言 » 快速排序从小到大排序C语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

快速排序从小到大排序C语言

发布时间: 2022-06-14 19:40:23

c语言程序从小到大排序要怎么写啊

冒泡排序法: /*#include<iostream.h> void main() { int a[10],temp,i,j; for(i=0;i<=9;i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } for(i=0;i<=8;i++)//9+8+'''+1=45次 for(j=0;j<=8-i;j++) { if(a[j]<a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } for(i=0;i<=9;i++) cout<<a[i]<<'\n'; }*/ //选择排序法 /*#include<iostream.h> void main() { int a[10],temp,i,j; for(i=0;i<=9;i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } for(i=0;i<=8;i++)// for(j=i+1;j<=9;j++) { if(a[i]<a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } } for(i=0;i<=9;i++) cout<<a[i]<<'\n'; }*/ // 进行插入排序算法 #include<iostream.h> void main() { int a[10],i,j,n=10,index,inserter; for(j=0;j<=9;j++) { cout<<"a["<<j<<"]="; cin>>a[j]; } for(i=1;i<n;i++) { inserter=a[i]; index=i-1; while(index>=0&&inserter<a[index]) { a[index+1]=a[index]; index--; } a[index+1]=inserter; } for(j=0;j<=9;j++) cout<<a[j]<<'\n'; }

② C语言:输入5个数,用调用函数的方法,从小到大排序 用简单点的

#include<stdio.h>

voidsort(float*a,intn)

{

inti,j,tmp;

for(i=0;i<n-1;i++)

for(j=0;j<n-i-1;j++)

if(a[j]>a[j+1])

{

tmp=a[j];

a[j]=a[j+1];

a[j+1]=tmp;

}

}

voidmain()

{

floata[5];

inti;

printf("请输入五个数(逗号隔开):");

scanf("%f,%f,%f,%f,%f",&a[0],&a[1],&a[2],&a[3],&a[4]);

sort(a,5);

printf("排序后为:");

for(i=0;i<5;i++)

printf("%.2f",a[i]);

printf(" ");

}

或者三个数的。

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;

}

(2)快速排序从小到大排序C语言扩展阅读:

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语言基础类型。

③ c语言 :用交换排序法对10个数据进行排序 从小到大 怎么做啊

#include <stdio.h>
void main()
{
int a[10];
int i,j;
int tmp;
printf("请依次输入10个数字:\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<10;i++)
{
for(j=0;j<10-i;j++)
{
if(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
printf("这10个数从小到大排序是:\n");
for(i=0;i<10;i++)
{
printf("%d\t",a[i]);
}
}

④ 随机生成一组整数,利用快速排序思想,将其从小到大排好。(c语言代码)

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#defineRANDOM(i)(rand()%i)//随机的常量
#defineN10//设置数组长度
//分区操作
intPartition(intarray[],intleft,intright)
{
inti,j;
inttemp;
j=left-1;
for(i=left;i<=right;i++)
{
if(array[i]<=array[right])//以最后一个数组的值为基准
{
j++;
temp=array[j];
array[j]=array[i];
array[i]=temp;
}
}
returnj;
}

//迭代运算
voidQuikSort(intarray[],intleft,intright)
{
intpivot;
if(left<right)
{
pivot=Partition(array,left,right);
QuikSort(array,left,pivot-1);
QuikSort(array,pivot+1,right);
}
}

/*主函数*/
intmain()
{
inti=0;
inta[N];
srand((int)time(0));//设置随机数种子
for(i=0;i<N;i++)//排序前
{
a[i]=RANDOM(100);//100以内的随机数
printf("%d ",a[i]);//输出随机得到的数组
}
printf(" ");
QuikSort(a,0,N-1);
for(i=0;i<N;i++)//输出排序后的数组
{
printf("%d ",a[i]);
}
printf(" ");
}

⑤ 在C语言中 编写一个程序实现从小到大排序

#include<stdio.h>
#include<stdlib.h>

intcmp(constvoid*a,constvoid*b)
{
return*(int*)a-*(int*)b;
}

intmain(intargc,char**argv)
{
inta[]={1,-2,53,49,144,65,267,98,112};
inti;

qsort(a,sizeof(a)/sizeof(int),sizeof(int),cmp);

for(i=0;i<sizeof(a)/sizeof(int);++i)
printf("%d",a[i]);

printf(" ");

return0;
}

如果要自己实现排序函数的话

#include<stdio.h>

voidqsort(int*a,intleft,intright)
{
intp=(left+right)/2;//以中间数作为主元
intk=a[p];
inti=left,j=right;

while(i<j)
{
//从左边开始将大于主元的数放在主元右边
while((i<=p)&&(a[i]<=k))
++i;
if(i<p)
{
a[p]=a[i];
p=i;
}

//从右边开始将小于主元的数放在左边
while((j>=p)&&(a[j]>=k))
--j;
if(j>p)
{
a[p]=a[j];
p=j;
}
}

a[p]=k;
//如果左边的数大于1个则递归左边
if(p-left>1)
qsort(a,left,p-1);
//如果右边的数大于1个则递归右边
if(right-p>1)
qsort(a,p+1,right);
}

intmain(intargc,char**argv)
{
inta[]={1,-2,53,49,144,65,267,98,112};
inti;

qsort(a,0,sizeof(a)/sizeof(int)-1);

for(i=0;i<sizeof(a)/sizeof(int);++i)
printf("%d",a[i]);
printf(" ");

return0;
}

⑥ c语言将数组从小到大排序

#include<stdio.h>
intmain()
{
inta[20];
inti,j,temp;
int*p=&a[0];
int*d;
intn;
printf("请输入数组长度");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入这个数组 ");
scanf("%d",p++);//<=================

}
for(p=a;p<a+n;p++)//<=================
{
for(d=p+1;d<a+n;d++)//<=================
{
if(*p>*d)
{
temp=*p;
*p=*d;
*d=temp;
}
}
}
p=a;
for(p;p<a+n;p++)
{
printf("%d ",*p);

}
return0;
}

⑦ C语言四个数从小到大排序

# include <stdio.h>void main (){ int t,a,b,c,d;printf("请输入4个数;");

scanf("%d,%d,%d,%d",&a,&b,&c,&d);

printf("a=%d,b=%d,c=%d,d=%d ",a,b,c,d);

if(a>b) {t=a;a=b;b=t;}if(a>b) {t=a;a=b;b=t;}}

⑧ C语言排序问题 将所有的数字从小到大的顺序排序(快排)

1.comp是一个函数指针,因为qsort的第四个参数是一个函数指针,所以这里只需要传comp函数指针就可以了。
2.参考楼上。
3.参考楼上。

⑨ c语言编程,有一组数据,98,12,87,4,65,23,54,33,48,78,将其由小到大排序

#include<stdio.h>

//序列“98,12,87,4,65,23,54,33,48,78”

void QuickSort(int a[],int left,int right)

{

int i,j,temp,tp;

temp=a[left];//暂存基准数

i=left;//最左位置

j=right;//最右位置

if(left>right)//递归结束条件

return;

while(i!=j)//当i和j不重合时

{

while(a[j]>=temp && i<j) //从右往左寻找小于基准数的值

j--;

while(a[i]<=temp && i<j) //从左往右寻找大于基准数的值

i++;

//找到了且i<j则交换数值

if(i<j)

{

tp=a[i];

a[i]=a[j];

a[j]=tp;

}

}

//将基准数和i、j的相遇数值进行交换

a[left]=a[i];

a[i]=temp;

//应用递归对此时基准数的左边进行快速排序

QuickSort(a,left,i-1);

//应用递归对此时基准数的右边进行快速排序

QuickSort(a,i+1,right);

}

void main()

{

int a[10],i;

printf("please input 10 numbers: ");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

printf("The array is: "); //输入序列“98,12,87,4,65,23,54,33,48,78”

for(i=0;i<10;i++)

printf("%-4d",a[i]);

QuickSort(a,0,9); //调用快速排序函数

printf(" After sort the array is: ");

for(i=0;i<10;i++)

printf("%-4d",a[i]);

printf(" ");

}



(9)快速排序从小到大排序C语言扩展阅读:

include用法:

#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。

插入头文件的内容

#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:

1、#include<文件名>

2、#include"文件名"

如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:

#include<math.h>//一些数学函数的原型,以及相关的类型和宏

如果需要包含针对程序所开发的源文件,则应该使用第二种格式。

采用#include命令所插入的文件,通常文件扩展名是.h,文件包括函数原型、宏定义和类型定义。只要使用#include命令,这些定义就可被任何源文件使用。

⑩ c语言怎样实现快速排序

include<stdio.h>

int arr_num[];
int length;

void quick_sort(int left, int right)
{
int i, j, c, temp;
if(left>right)
return;

i= left;
j= right;
temp = arr_num[i]

while(i != j)
{
while(arr_num[j]>=temp && i<j)
{
j--;
}

while(arr_num[i]<=temp && i<j)
{
i++;
}

if(i<j)
{
c = arr_num[i];
arr_num[i] = arr_num[j];
arr_num[j] = c;
}
}

//left为起始值(参照值)此时的I为第一次排序结束的最后值,与参照值交换位置
arr_num[left] = arr_num[i];
arr_num[i] = temp;

//继续递归直到排序完成
quick_sort(left, i-1);
quick_sort(i+1, right);
}

int main()
{
int i;
length = 7;
arr_num[length] = {23, 7, 17, 36, 3, 61, 49}

//快速排序调用
quick_sort(0, length-1);

//输出排序后的结果
for(i=1;i<=length;i++)
printf("%d ",arr_num[i]);
getchar();getchar();
return 0;
}