天天看點

C語言排序類---冒泡排序(BubbleSort)指針實作

//冒泡排序(BubbleSort)

//100000個随機數 ,共耗時40s 處理成功(效率低下) 

#include <stdio.h>

#include <windows.h>

#include <stdlib.h>

#define Number 100000 //随機數的數量

void BubbleSort(int *Pointer,int n); //冒泡排序的函數

void Exchange(int *A,int *B); //冒泡排序函數--子函數

int main()

{

    int Array[Number];

    int i;

    for(i =0;i <Number;i++)

    {

          Array[i] = rand()%Number; //在NUMBER範圍内 産生這個範圍的随機數

    }

    for(i =0;i <Number;i++)

    {

          printf("Array[%d] = %d \n",i,Array[i]);

    }

    printf("Now Array Proceeding ....\n");

    BubbleSort(Array,Number);

    for(i =0;i <Number;i++)

    {

          printf("Array[%d] = %d \n",i,Array[i]);

    }

    Sleep(100000);

    return 0;

}

//冒泡排序算法

void BubbleSort(int *Pointer,int n)

{

     int i,j;

     int m =n;

     for(i =0;i <n;i++)

     {

          for(j =0;j <m;j++)

          {

                if(*(Pointer +j)> *(Pointer +j +1))

                      Exchange(Pointer +j,Pointer +j +1);

          }

          m -= 1;

     }

}

//冒泡子程式--交換

void Exchange(int *A,int *B)

{

     int C = *A;

     *A = *B;

     *B = C;

}