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

来源:互联网 发布:linux 物理内存 编辑:程序博客网 时间:2024/06/03 16:48

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);}



0 0