几种常见的排序算法(C++版)
2016-11-09 13:38
246 查看
1、冒泡法
4 3 2 1
复杂度O(n*n);
一共要进行3次遍历,即(n-1)次;
每次遍历需要(n - 1 - i)次;
冒泡排序是稳定的排序。
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);
}
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);
}
相关文章推荐
- c++常见的几种排序算法总结
- 几种常见的排序算法(C++)
- 几种常见排序算法的C++描述
- 常见几种排序算法的C++描述
- 常见的几种排序算法(java和C++版)(参考《算法》)
- 用Java实现几种常见的排序算法
- 几种常见排序算法实现
- 用Java实现几种常见的排序算法及SortUtil
- 用java实现几种常见的排序算法
- 用Java实现几种常见的排序算法
- 几种常见的排序算法
- 用Java实现几种常见的排序算法
- 用Java实现几种常见的排序算法
- C语言实现几种常见排序算法
- 转 常见的几种c++的错误
- 几种排序算法(c,c++)
- C++几种常见的素数判断算法
- 用Java实现几种常见的排序算法
- 用Java实现几种常见的排序算法
- 用Java实现几种常见的排序算法