#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);
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(" ");
//冒泡排序
/*
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]);
}
//快速排序
}