#include<iostream>
using namespace std;
#define type long
typedef int (*compareFunc)(type a,type b);//定义函数指针
void bubble_sort(type* arry,int m,compareFunc func);//申明冒泡函数
int compare(type a,type b);//申明比较函数
#define n 10
void main(){
type arry[n]={8,2,3,4,2,4,8,9,0,1};
bubble_sort(arry,n,compare);
int i = 9;
while(i >= 0){
std::cout<<arry[9-i]<<std::endl;
i--;
}
}
int compare(type a,type b){
if (a > b) return 1;
else if (a == b) return 0;
else return -1;
}
void bubble_sort(type* arry,int m,compareFunc func){
bool flag = true;
int count = 0;
for (int i = 0; (i < m - 1)&&flag==true ; i++)//若不用flag做优化运行次数为9次,用他做优化运行次数为6次。
{
flag = false;
count++;
for (int j = m - 1;j > i;j--)//把大的放在前面
{
if (func(*(arry+j-1),*(arry+j)) < 0)//若要把小的放后面需要将<修改成>
{
flag = true;
swap(*(arry+j-1),*(arry+j));//此行可代替一下三行
// type temp = *(arry+j-1);
// *(arry+j-1) = *(arry+j);
// *(arry+j) = temp;
}
}
// for(int j = 0; j < m - 1 - i; j++)//把最大的放在后面
// {
// if(func(*(arry + j), *(arry + j + 1)) > 0) //同上
// {
// int temp = *(arry + j);//如果前面的比后面的大
// *(arry + j) = *(arry + j + 1);//那么就换位置
// *(arry + j + 1) = temp;
// }
// }
}
cout<<count<<endl;
}
冒泡排序算法及其简单优化算法
最新推荐文章于 2024-04-22 16:56:19 发布