用c语言快速实现三种常见排序的代码示例
来源:爱站网时间:2021-06-21编辑:网友分享
对数组元素进行排序的方法有很多种,比如冒泡排序、选择排序、快速排序就是比较常见的三种,那么用C语言要怎么实现这三种排序呢?接下来,爱站技术频道小编将为大家分享关于用C语言实现冒泡排序、选择排序、快速排序的代码示例。
代码如下所示:
/*
* 冒泡排序
*/
void BubbleSort(int arr[], int n)
{
int temp;
for (int i = 0; i {
for (int j = i + 1; j {
if (arr[i] > arr[j])
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
/*
* 选择排序
*/
void ChooseSort(int arr[], int n)
{
int temp, k;
for (int i = 0; i {
k = i;
for (int j = i + 1; j {
if (arr[k] > arr[j])
{
k = j;
}
}
if (k != i)
{
temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
}
}
/*
* 快速排序,官方原版
*/
void q_sort(int numbers[], int left, int right)
{
int pivot, l_hold, r_hold;
l_hold = left;
r_hold = right;
pivot = numbers[left];
while (left {
while ((numbers[right] >= pivot) && (left {
right--;
}
if (left != right)
{
numbers[left] = numbers[right];
left++;
}
while ((numbers[left] {
left++;
}
if (left != right)
{
numbers[right] = numbers[left];
right--;
}
}
numbers[left] = pivot;
pivot = left;
left = l_hold;
right = r_hold;
if (left {
q_sort(numbers, left, pivot-1);
}
if (right > pivot)
{
q_sort(numbers, pivot+1, right);
}
}
/*
* 快速排序
*/
void quick_sort(int *x, int low, int high)
{
int i, j, t;
if (low {
i = low;
j = high;
t = *(x+low); /*暂存基准点的数*/
while (i
while (i
{
j--; /*前移一个位置*/
}
if (i
*(x+i) = *(x+j); /*上面的循环退出:即出现比基准点小的数,替换基准点的数*/
i++; /*后移一个位置,并以此为基准点*/
}
while (i
i++; /*后移一个位置*/
}
if (i
*(x+j) = *(x+i); /*上面的循环退出:即出现比基准点大的数,放到右边*/
j--; /*前移一个位置*/
}
}
*(x+i) = t; /*一遍扫描完后,放到适当位置*/
quick_sort(x,low,i-1); /*对基准点左边的数再执行快速排序*/
quick_sort(x,i+1,high); /*对基准点右边的数再执行快速排序*/
}
}
// 输出数组元素
void outArray(int arr[], int n)
{
for(int i = 0; i {
cout }
cout }
void main()
{
const int N = 5;
int arr1[N] = {4, 3, 5, 2, 1};
int arr2[N] = {4, 3, 5, 2, 1};
int arr3[N] = {4, 3, 5, 2, 1};
cout outArray(arr1, N);
BubbleSort(arr1, N);
cout outArray(arr1, N);
cout outArray(arr2, N);
ChooseSort(arr2, N);
cout outArray(arr2, N);
cout outArray(arr3, N);
//q_sort(arr3,0, N - 1);
quick_sort(arr3,0, N - 1);
cout outArray(arr3, N);
system("pause");
}
以上内容中,爱站技术频道小编为大家详细介绍了C语言中实现选择排序、冒泡排序和快速排序的代码示例,如果需要用到的朋友可以直接参考使用。