各种排序算法,哪里需要优化改进的,望各位大神指点
void Swap(int &a,int &b) //交换数据C++ 排序算法 冒泡排序
{
int temp = a;
a= b;
b = temp;
}
//冒泡排序
void BubbleSort(int *a,int size)
{
for(int i=0;i<size-1;i++)
for(int j = size-1;j>i;j--)
if(a[j]>a[j-1])
Swap(a[j],a[j-1]);
}
//选择排序
void SelectSort(int *a,int size)
{
for(int i=0;i<size-1;i++)
{
int min = i;
for(int j=i+1;j<size;j++)
{
if(a[min]>a[j])
min=j;
Swap(a[i],a[min]);
}
}
}
//插入排序
void InsertSort(int *a,int size)
{
for(int i=1;i<size;i++)
{
if(a[i]<a[i-1])
{
int temp = a[i];
int tempid = i;
do
{
a[tempid] = a[tempid-1];
tempid--;
}while(tempid>0 && a[tempid-1]>temp);
a[tempid] = temp;
}
}
}
//快速排序
void QuickSort(int *a,int left,int right)
{
if(left>=right)
return ;
int l = left, r = right;
int temp = a[left];
while(l != r)
{
while(l<r && a[r] <= temp) r--;
a[l] = a[r];
while(l<r && a[l] >= temp) l++;
a[r] = a[l];
}
a[l] = temp;
QuickSort(a,left,l-1);
QuickSort(a,l+1,right);
}
//计数排序
void CountSort(int *a,int size)
{
int temp[100]={0}; //临时数组初始化
for(int i=0;i<size;i++) //将需要排序的数组值定为临时数组下标并且设置为1
{
temp[a[i]]++;
}
int j=0;
for(i=0;i<100;i++)
{
while(0 != temp[i] )
{
a[j] = i;
temp[i]--;
j++;
}
}
}