重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
选择排序法:
创新互联建站专注于浪卡子网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供浪卡子营销型网站建设,浪卡子网站制作、浪卡子网页设计、浪卡子网站官网定制、微信平台小程序开发服务,打造浪卡子网络公司原创品牌,更为您提供浪卡子网站排名全网营销落地服务。
#include
"stdio.h"
#define
N
20
main()
{
int
i,j,k;
float
a[N],t;
printf("请输入二十位数:\n");
for(i=0;iN;i++)
scanf("%f",a[i]);
for(i=0;iN-1;i++)
{
k=i;
for(j=i+1;jN;j++)
if(a[k]a[j])
k=j;
if(i!=k)
{
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
for(i=0;iN;i++)
printf("%f\t",a[i]);
printf("\n");
}
插入排序法:
#include
"stdio.h"
#define
N
20
main()
{
int
i,j;
float
a[N],k;
printf("请输入二十位数:\n");
for(i=0;iN;i++)
scanf("%f",a[i]);
for(i=0;iN;i++)
{
k=a[i];
j=i-1;
while(j=0ka[j])
{
a[j+1]=a[j];
j--;
}
a[j+1]=k;
}
for(i=0;iN;i++)
printf("%f\t",a[i]);
printf("\n");
}
冒泡排序法:
#include
"stdio.h"
#define
N
20
main()
{
int
i,j;
float
a[N],t;
printf("请输入二十位数:\n");
for(i=0;iN;i++)
scanf("%f",a[i]);
for(i=0;iN;i++)
for(j=i+1;jN;j++)
if(a[i]a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
for(i=0;iN;i++)
printf("%f\t",a[i]);
printf("\n");
}
如果对你有帮助,请记得采纳最佳答案,谢谢!
常用的c语言排序算法主要有三种即冒泡法排序、选择法排序、插入法排序。
一、冒泡排序冒泡排序:
是从第一个数开始,依次往后比较,在满足判断条件下进行交换。代码实现(以升序排序为例)
#includestdio.hint main()
{
int array[20] = { 6,9,7,8,5,3,4,0,1,2 , 21,23, 18, 33, 28,29,38,26, 48,19};
int temp;
for (int i = 0; i 20; i++)
{//循环次数
for (int j = 0; j 20 - i-1; j++)
{
if (array[j] array[j+1])
{//前面一个数比后面的数小时发生交换
temp = array[j];
array[j] = array[j+1];
array[j + 1] = temp;
}
}
} //打印数组
for (int i = 0; i 20; i++)
printf("%2d", array[i]);
return 0;}
}
二、选择排序以升序排序为例:
就是在指定下标的数组元素往后(指定下标的元素往往是从第一个元素开始,然后依次往后),找出除指定下标元素外的值与指定元素进行对比,满足条件就进行交换。与冒泡排序的区别可以理解为冒泡排序是相邻的两个值对比,而选择排序是遍历数组,找出数组元素与指定的数组元素进行对比。(以升序为例)
#includestdio.h
int main()
{
int array[10] = { 6,9,7,8,5,3,4,0,1,2 };
int temp, index;
for (int i = 0; i 9; i++)
{
index = i;
for (int j = i; j 10; j++)
{
if (array[j] array[index])
index = j;
}
if(i != index)
{
temp = array[i];
array[i] = array[index];
array[index] = temp;
}
for(int i=0;i10:i++)
printf("%2d"array[i]);
return 0;
}
三、快速排序
是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
void QuickSort(int* arr, int size)
{
int temp, i, j;
for(i = 1; i size; i++)
for(j=i; j0; j--)
{
if(arr[j] arr[j-1])
{
temp = arr[j];
arr[j]=arr[j-1];
arr[j-1]=temp;
}
}
}
#include "stdio.h"
int a[20];
void function(int *b,int m,int n)
{
int p,q;
int t;
for(p=m-1;pm+n-1;p++)
{for(q=m-1;qp;q++)
{
if(*(a+p)*(a+q))
{
t=*(a+p);*(a+p)=*(a+q);*(a+q)=t;
}
}
}
}
void main()
{
int i,x,y;
for(i=0;i20;i++)
{
printf("请输入第%d个数:\n",i+1);
scanf("%d",(a+i));
}
printf("从第x个数开始,对后面的y个数进行从小到大排序,输入x、y:\n");
scanf("%d,%d",x,y);
printf("原始数列是:\n");
for(i=0;i20;i++)
{
printf("a[%d]=%2d,",(i+1),*(a+i));
}
printf("\b\n");
function(a,x,y);
printf("排序后的数列为:\n");
for(i=0;i20;i++)
{
printf("a[%d]=%2d,",(i+1),*(a+i));
}
printf("\b\n");
}
(下面是程序运行截图)
代码如下:
int a[20];
int i,j,t;
printf("请输入20个数字,以回车间隔:");
for(i=0;i20;i++)
scanf("%d",a[i]);
printf("\n");
for(j=0;j20;j++)
for(i=0;i20-j;i++)
if(a[i]a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("排序好的数组为:\n");
for(i=0;i20;i++)
printf("%d ",a[i]);
printf("\n");
}
#includestdio.h
#includestdlib.h
int main(void){
int i,j,n,a[20];
//限定整数范围为0~k。如果不需要范围,可以去掉%k
int k=100;
for(i=0;i20;i++)
a[i]=rand()%k;
//排序a[20],从小到大
for(i=0;i19;i++){
for(j=i+1;j20;j++){
if(a[i]a[j]){
n=a[i];
a[i]=a[j];
a[j]=n;
}
}
}
//输出a[20]
for(i=0;i20;i++)
printf("%d ",a[i]);
return 0;
}