/*****************************************************************************
FileName : sort.c
Function : C语言冒泡排序
Author : mike
Email : [email protected]
Version : V1.0
Date : 2019-07-12
Note :
*****************************************************************************/
#include <stdio.h>
void bubble_sort(float *pt,int n)//全用指针的冒泡排序法---从大到小
{
int i,j;
float tempnum;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(*(pt+j) > *(pt+i))
{
tempnum = *(pt+i);
*(pt+i) = *(pt+j);
*(pt+j) = tempnum;
}
}
}
}
void print_result(float *p,int n)//输出结果
{
int k;
for(k=0;k<n;k++)
{
printf("%g\t",*(p+k));//\t指的是一个制表符---占8列
}
}
int main()//主函数
{
int i;
float array[10];
float * pointer;
printf("请输入10个数:\n");
for(i=0;i<10;i++)
{
scanf("%f",&array[i]);
}
pointer=array;
bubble_sort(pointer,10); //冒泡排序
print_result(pointer,10);//输出结果
return 0;
}
/*****************************************************************************
* File : C语言冒泡排序
* Function : 非指针的方法
* Author : Mike--->欢迎咨询单片机培训
* 淘宝店铺 : https://shop114292239.taobao.com
* SCDN : http://blog.csdn.net/beyondmike
* QQ : 276678408
* Email : [email protected]
* Copyright : 版权归 Mike 所有,请保留本人著作权,勿随意修改、随意发布,未经
允许不得用于其他商业用途
*****************************************************************************/
#include <stdio.h>
#define MAX 255
int R[MAX];
void Bubble_Sort(int n)
{
/* R(l..n)是待排序的文件,采用自下向上扫描,对R做冒泡排序 */
int i,j;
int exchange; /* 交换标志 */
for(i=1;i<n;i++) /* 最多做n-1趟排序 */
{
exchange=0; /* 本趟排序开始前,交换标志应为假 */
for(j=n-1;j>=i;j--) /* 对当前无序区R[i..n]自下向上扫描 */
if(R[j+1]<R[j])/* 交换记录 */
{
R[0]=R[j+1]; /* R[0]不是哨兵,仅做暂存单元 */
R[j+1]=R[j];
R[j]=R[0];
exchange=1; /* 发生了交换,故将交换标志置为真 */
}
if(!exchange) /* 本趟排序未发生交换,提前终止算法 */
return;
}
}
void main()
{
int i,n;
//clrscr();
system("cls");
puts("Please input total element number of the sequence:");//请输入元素个数
scanf("%d",&n);
if(n<=0||n>MAX)
{
printf("n must more than 0 and less than %d.\n",MAX);
exit(0);
}
puts("Please input the elements one by one:");
for(i=1;i<=n;i++)
scanf("%d",&R[i]);
puts("The sequence you input is:");
for(i=1;i<=n;i++)
printf("%4d",R[i]);
Bubble_Sort(n);
puts("\nThe sequence after bubble_sort is:");
for(i=1;i<=n;i++)
printf("%4d",R[i]);
puts("\n Press any key to quit...");
getchar();
getchar();
}