“test.cpp”
<strong><span style="font-size:18px;">#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
//优化趟数里的次数
void BubbleSort_OP2(int* arr ,size_t size)
{
int n = 0;
int m = size-1;
bool flag = true;
for(int i = 0;i < size-1 && flag;i++)
{
flag = false;
for(int j = 0;j < m;j++)
{
if(arr[j] < arr[j+1])
{
swap(arr[j],arr[j+1]);
flag = true;
n = j;
}
}
m = n;
}
}
//优化趟数
void BubbleSort_OP(int* arr,size_t size)
{
bool flag = true;
for(int i = 0;i < size-1 && flag;i++)
{
flag = false;
for(int j = 0;j < size-1-i;j++)
{
if(arr[j] < arr[j+1])
{
swap(arr[j],arr[j+1]);
flag = true;
}
}
}
}
//未优化
void BubbleSort(int* arr,size_t size)
{
for(int i = 0;i < size-1;i++)
{
for(int j = 0;j < size-1-i;j++)
{
if(arr[j] < arr[j+1])
{
swap(arr[j],arr[j+1]);
}
}
}
}
void test()
{
int arr[] = {8,5,3,9,1,7,2,4,6,0};
int arr2[] = {8,9,7,6,5,4,3,2,1};
size_t size = sizeof(arr)/sizeof(arr[0]);
size_t size2 = sizeof(arr2)/sizeof(arr2[0]);
BubbleSort(arr,size);
BubbleSort_OP(arr2,size2);
int i = 0;
for(i = 0;i < size;i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
for(i = 0;i < size2;i++)
{
cout<<arr2[i]<<" ";
}
cout<<endl;
int arr3[] = {5,1,2,3,4,6,8,0,9,7};
int size3 = sizeof(arr3)/sizeof(arr3[0]);
BubbleSort_OP2(arr3,size3);
for(i = 0;i < size3;i++)
{
cout<<arr3[i]<<" ";
}
cout<<endl;
}
int main()
{
test();
system("pause");
return 0;
}</span></strong>