排序算法

#include <stdio.h>

#define N 4

//冒泡排序

int* bubbleSort(int *num,int NN)   //前面参数是指向整形数组的指针,后面的N是这个数组的大小

{

    for (int i=0; i<NN-1; i++) { //排序N-1次

        for (int j=0; j<NN-1-i; j++) {  //每次都从第一个一次往后面的比,大的排在后面,但后面已经排序好了的就不需要比了

            if (num[j]>num[j+1]) {

                num[j]=num[j]^num[j+1];   //yi'huo

                num[j+1]=num[j]^num[j+1];

                num[j]=num[j]^num[j+1];

            }

        }

    }

    int *p=num; //返回数组

    return p;

}

//快速排序

void* quickSort(int *num,int NN)

{

    

}

//显示调用排序方法后的数组

void* show(int num[],int NN,int(*p)(int num[],int NN))  //指向数组的指针,和指向函数的指针

{

    return p(num, NN);

}

 

 

int main(int argc, const char * argv[])

{

//    printf("您想要排序几个数:");

//    scanf("%d",&N);

    printf("输入您要排序的%d个数(例如:1 3 2 4)\n",N);

    int num[N];

    for (int i=0; i<N; i++) {

        scanf("%d",&num[i]);

    }

    printf("您输入的数组是:");

    for (int i=0; i<N; i++) {

        printf("%d ",num[i]);

    }

    printf("\n");

    

    //冒泡排序

    /*

    for (int i=0; i<N-1; i++) { //排序N-1次

        for (int j=0; j<N-1-i; j++) {  //每次都从第一个一次往后面的比,大的排在后面,但后面已经排序好了的就不需要比了

            if (num[j]>num[j+1]) {

                num[j]=num[j]^num[j+1];

                num[j+1]=num[j]^num[j+1];

                num[j]=num[j]^num[j+1];

            }

        }

    }

    */

    show(num,N, bubbleSort);  //使用委托,调用外部函数,但数组是地址传递,不是值传递,所以在外面函数将main函数中的数组作为参数传递的时候,改变参数中的数组中的值,实际上就改变了数组中的值

    printf("冒泡排序后的数组是:");

    for (int i=0; i<N; i++)

    {

        printf("%d ",num[i]);

    }

    //快速排序 

}

posted @ 2013-07-10 18:51  蓬莱仙羽  阅读(172)  评论(0)    收藏  举报