冒泡排序2種算法

 

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

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章