您的位置:首页 > 编程语言 > C语言/C++

几种常见的排序算法(C++版)

2016-11-09 13:38 246 查看
1、冒泡法

4 3 2 1

复杂度O(n*n);

一共要进行3次遍历,即(n-1)次;

每次遍历需要(n - 1 - i)次;

冒泡排序是稳定的排序。

#include <iostream>
using namespace std;
void bubble_sort(int a[], int n)
{
int loop_times = 0;
int changes = 0;
for(int i = 0; i < n - 1; i++)
{
for(int j = 0; j < n - i - 1; j++)
{
if(a[j] > a[j+1])
{
swap(a[j], a[j+1]);
changes = 1;
}

loop_times++;
}
if(changes == 0)
{
break;
}
}

cout<<"loops = "<<loop_times<<endl;
}

2、快速排序。

快速排序是一种不稳定的排序算法。

void QuickSort(int a[], int head, int tail)
{
int left = head;
int right = tail;
int key = a[left];

if(head >= tail)
{
return;
}

while(left < right)
{
while(left < right && a[right] >= key)right--;
a[left] = a[right];

while(left < right && a[left] <= key)left++;
a[right] = a[left];
}

a[left] = key;
QuickSort(a, head, left - 1);
QuickSort(a, left + 1, tail);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: