今天晚上看了一维数组,就在想素组中元素如何排序,网上看了些大佬们的思路和自己的一些理解,用冒泡排序法写了一个简单的素组中元素排序。
冒泡排序法:重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,该元素列就排序完成。(百度百科的)
数组中元素出现次数统计是最后加的,还不完善,不过基本满足需求,之后再在基础上添加一些功能。
#include <stdio.h>
void sort(int lels[],int count);
void sort1(int lels[],int count);
void Count(int lels[],int i,int count);
int main(void)
{
int i = 0;
int num; //存储数组元素个数
printf("输入的数组元素的个数:\n");
scanf("%d",&num); //获取用户输入的数组元素的个数
int array[num];
printf("输入要排序的数:\n");
for(i = 0;i < num;i++)
{
scanf("%d",&array[i]);
}
sort1(array,num); //进行排序
printf("从大到小顺序:\n");
for(i = 0;i < num;i++)
{
printf("%-3d",array[i]);
}
printf("\n");
sort(array,num); //进行排序
printf("从小到大顺序:\n");
for(i = 0;i < num;i++)
{
printf("%-3d",array[i]);
}
printf("\n");
Count(array,0,num);//统计元素出现次数
return 0;
}
void sort(int lels[],int count)
{
int i,j;
int temp;
for(i = 0;i < count-1;i++){
for(j = i+1; j < count;j++)
{
if(lels[i] > lels[j]) // 使用冒泡排序
{
temp=lels[i];
lels[i]=lels[j];
lels[j]=temp;
}
}
}
}
void sort1(int lels[],int count)
{
int i,j;
int temp;
for(i = 0;i < count-1;i++){
for(j = i+1; j < count;j++)
{
if(lels[i] < lels[j]) // 使用冒泡排序
{
temp=lels[i];
lels[i]=lels[j];
lels[j]=temp;
}
}
}
}
void Count(int lels[],int i,int count)
{
int top=lels[i];
int sum=0;
while(lels[i]==top && i<count)
{
sum++;//出现次数
i++;
}
if(lels[i]!=top)
{
printf("%d出现了:%d次\n",top,sum);
if(i<count)
{
Count(lels,i,count);//递归调用
}
}
}
本文介绍了如何使用冒泡排序算法对一维整型数组进行排序,并附加了元素出现次数的统计功能。通过示例代码展示了从大到小和从小到大的排序过程,以及统计数组中各元素的出现频率。
1733

被折叠的 条评论
为什么被折叠?



