/*****************************************************************************
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();
}