![](https://img-blog.csdnimg.cn/20200901172723807.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0OTM1Mzcz,size_16,color_FFFFFF,t_70)
冒泡排序
int boblesort(int a[], int len)
{
for(int i=len-1;i>0;i--)
{
int flag = 1;
int index = 0;
for (int j = 0; j < i; j++)
{
if (a[j] > a[j + 1])
{
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
flag = 0;
index = j+1;
}
}
i = index;
if (flag == 1)
break;
}
return 0;
}
int main()
{
int a[] = {0,5,8,65,-48,6,13,894,8,5,2,-83,4,1000,1001,1002};
int size = sizeof(a) / sizeof(int);
boblesort(a, size);
for (auto ret : a)
cout << ret <<" ";
cout << endl;
system("pause");
return 0;
}
选择排序
void choosesort(int a[], int len)
{
for (int i = len-1; i >=0; i--)
{
int index=0;
int max=a[0];
for (int j=0; j < i;j++)
{
if (max <= a[j])
{
max = a[j];
index = j;
}
}
if (index == i)
continue;
a[index] = a[i];
a[i] = max;
}
}
插入排序
int binaryseach(int a[], int len)
{
int begin = 0;
int end = len;
while (begin < end)
{
int mid = (begin + end) >> 1;
if (a[mid] > a[len])
{
end = mid;
}
else
{
begin = mid + 1;
}
}
return begin;
}
void insertsort(int a[], int len)
{
for (int i = 1; i < len; i++)
{
int temp = a[i];
int index=binaryseach(a, i);
for (int j = i;j > index; j--)
{
a[j] = a[j - 1];
}
a[index] = temp;
}
}
归并排序
void merge(int a[],int begin, int mid, int end)
{
int temp[100];
int li = 0,le=mid-begin;
int ai = begin;
int ri = mid,re=end;
for (int i = 0; i <le; i++)
temp[i] = a[i+begin];
while (li < le)
{
if (ri<re && a[ri] < temp[li])
{
a[ai++] = a[ri++];
}
else
{
a[ai++] = temp[li++];
}
}
}
void sort(int a[],int begin, int end)
{
if (end - begin < 2) return;
int mid = (end + begin) >> 1;
sort(a,0, mid);
sort(a,mid, end);
merge(a, begin, mid, end);
}
快速排序
int pivot(int a[], int begin,int end)
{
int temp = a[begin];
--end;
while (begin < end)
{
while (begin < end)
{
if (temp < a[end])
end--;
else
{
a[begin++] = a[end];
break;
}
}
while (begin < end) {
if (temp > a[begin])
begin++;
else
{
a[end--] = a[begin];
break;
}
}
}
a[begin] = temp;
return begin;
}
void quicksort(int a[], int begin,int end)
{
if (end - begin < 2) return;
int mid=pivot( a, begin, end);
quicksort(a, begin, mid);
quicksort(a, mid+1, end);
}