冒泡排序

一,排序以前的簡單介紹,算法

1. 輸入兩個數,按代數值由小到大的順序輸出這兩個數。數組

#include <stdio.h>
#include <stdlib.h>
int main()
{
    float a, b, t;
    scanf("%f %f", &a, &b);
    if(a > b)
    {
        t = a;
        a = b;
        b = t;
    }
    printf("%5.2f, %5.2f\n", a, b);
}

輸入:5.444 1.222spa

輸出:1.22 5.44指針

解析:設置一箇中間變量來交換兩個數的值。code

2. 輸入3個數a,b,c;要求按由小到大的順序輸出。排序

#include <stdio.h>
#include <stdlib.h>
int main()
{
    float a, b, c, t;
    scanf("%f %f %f", &a, &b, &c);
    /* 實現 a 和 b 的交換*/
    if(a > b)
    {
        t = a;
        a = b;
        b = t;
    }
    /* 實現 a 和 c 的交換*/
    if(a > c)
    {
        t = b;
        b = c;
        c = t;
    }
    if(b > c)
    {
        t = b;
        b = c;
        c = t;
    }
    printf("%5.2f, %5.2f, %5.2f\n", a, b, c);
}

解析:3個數要交換3次,那麼10個數兩兩交換要多少次,顯然這種方法不合適了,input

這就是算法的重要性了,接下來講說冒泡排序。io

2、冒泡排序class

算法要求:用起泡法對10個整數按升序排序。變量

算法分析:若是有n個數,則要進行n-1趟比較。在第1趟比較中要進行n-1次相鄰元素的兩兩比較,在第j趟比較中要進行n-j次兩兩比較。比較的順序從前日後,通過一趟比較後,將最值沉底(換到最後一個元素位置),最大值沉底爲升序,最小值沉底爲降序。

1. 用數組實現

#include <stdio.h>
#include <stdlib.h>
#define N 10
int main()
{
    int arr[N] = {0};
    int i=0, j=0,tmp=0;
    printf("Please input 10 numbers:\n");
    for(i=0;i<N;i++)
    {
        scanf("%d", &arr[i]);
    }
    for(j=0; j < N-1; j++)
    {
        for(i=0; i < N-1-j;i++)
        {
            if(arr[i] > arr[i+1])
            {
                tmp      = arr[i];
                arr[i]   = arr[i+1];
                arr[i+1] = tmp;
            }
        }
    }

    printf("the sorted numbers:\n");
    for(i=0;i<N;i++)
    {
        printf("%d ",arr[i]);
    }
    printf("\n");
    return 0;
}

2. 用指針實現

#include <stdio.h>
#include <stdlib.h>
#define N 10
int main()
{
    int arr[N] = {0};
    int i=0, j=0;
    int *p=NULL, *tmp=NULL;
    p = arr;
    printf("Please input 10 numbers:\n");
    for(i=0;i<N;i++)
    {
        scanf("%d", p+i);
    }

    for(j=0; j < N-1; j++)
    {
        for(i=0; i < N-1-j;i++)
        {
            if(*(p+i) > *(p+i+1))
            {
                tmp      = *(p+i);
                *(p+i)   = *(p+i+1);
                *(p+i+1) = tmp;
            }
        }
    }

    printf("the sorted numbers:\n");

    for(i=0;i<N;i++)
    {
        printf("%d ",*p++);
    }
    printf("\n");
    return 0;
}
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息