冒泡排序法

来源:互联网 发布:网络名言名句大全爱情 编辑:程序博客网 时间:2024/06/10 14:42
#include <iostream>#include <ctime>using namespace std;//冒泡排序  两两比较,小的在左,比较N-1次,达到排序目的const int N=10;int a[N];void init();void result();//还是五种实现void ForSort(int arr[]);void GotoSort(int arr[]);void WhileSort(int arr[]);void DoWhileSort(int arr[]);void RecursiveSort(int arr[],int i=0);int main(){    //初始化    init();    //排序    //ForSort(a);    //GotoSort(a);    //WhileSort(a);    //DoWhileSort(a);    RecursiveSort(a);    //结果    cout << "-------------\n";    result();    getchar();}void RecursiveSort(int arr[],int i){    if (i < N - 1)    {        int j = i + 1;        b:        if (j < N)        {            if (arr[i]>arr[j])                swap(arr[i], arr[j]);            j++;            goto b;        }        RecursiveSort(arr, ++i);    }}void DoWhileSort(int arr[]){    int i(0);    do    {        int j = i + 1;        do        {            if (arr[i] > arr[j])                swap(arr[i], arr[j]);        } while (++j<N);    } while (++i<N-1);}void WhileSort(int arr[]){    int i(0);    while (i<N-1)    {        int j = i + 1;        while (j<N)        {            if (arr[i]>arr[j])                swap(arr[i], arr[j]);            j++;        }        i++;    }}void GotoSort(int arr[]){    int i(0);    a:    if (i < N-1)    {        int j = i + 1;        b:        if (j < N)        {            if (arr[i]>arr[j])                swap(arr[i], arr[j]);            j++;            goto b;        }        i++;        goto a;    }}void ForSort(int arr[]){    for (int i = 0; i < N; i++)    {        for (int j = i+1; j < N; j++)        {            if (arr[i]>arr[j])            {                swap(arr[i], arr[j]);            }        }    }}void init(){    srand(unsigned int(time(NULL)));    for (int i = 0; i < N; i++)    {        a[i] = rand() % 100;        printf("%d\n", a[i]);    }}void result(){    for (int i = 0; i < N; i++)    {        printf("%d\n", a[i]);    }}

0 0
原创粉丝点击