#include<iostream>
#include<assert.h>
#include<math.h>
#include<queue>
#include<vector>
//所有排序默认升序
using namespace std;
void pri(int *arr, size_t size)
{
for (size_t i = 0; i < size; ++i)
{
cout << arr[i] << " ";
}
cout << endl;
}
//冒泡排序:每次把一个最值放到最后面,并缩小区间
void BubbleSort(int* array, size_t size)
{
assert(array);
for (size_t i = 0; i < size; ++i)
{
for (size_t j = 1; j < size - i; ++j)
{
if (array[j] < array[j - 1])
swap(array[j], array[j - 1]);
}
}
}
//
//快排的核心思想:将比key值大的放到一边,比key值小的,放到另一边;
int QSort(int* array, size_t size, int left, int right)
{
int key = array[left];
while(left < right)
{ //key为第一个值就要从后面开始变
while (left < right&&array[right] >= key)
--right;
swap(array[left], array[right]);
while ( left < right && array[left] <= key)
++left;
swap(array[left], array[right]);
}
return left;
}
void QuickSort(int* array, size_t size, int left, int right)
{
if (left<right)
{
int pivotloc = QSort(array, size, left, right);
//分别对小区和大区进行快排
QuickSort(array, size, left, pivotloc - 1);
QuickSort(array, size, pivotloc + 1, right);
}
}
void QuickSort(int* array, size_t size)
{
assert(array);
QuickSort(array, size, 0, size-1);
}
//
排序算法(2)冒泡排序,快速排序,归并排序和基数排序MSD,LSD
最新推荐文章于 2023-11-21 20:47:59 发布
本文深入探讨了四种经典的排序算法:冒泡排序、快速排序、归并排序以及基数排序的MSD和LSD方法。通过对这些算法的解析,帮助读者理解它们的工作原理及效率。
摘要由CSDN通过智能技术生成