1.冒泡排序
(1)基本思想:从无序序列头部开始,进行两两比较,根据大小交换位置,直到最后将最大(最小)的数据元素交换到了无序序列的队尾,从而成为有序序列的一部分;下一次继续这个过程,直到所有数据元素都排好序。算法的核心在于:每次通过两两比较交换位置。选出剩余无序序列里最大(最小)的数据元素放到队尾。
(2)C++实现代码:
#include<stdio.h>
void bubble_sort(int arr[],int len)
{
int i,j,temp;
for(i=0;i<len-1;i++){
for(j=0;j<len-1-i;j++){
if(arr[j]>arr[j+1])
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
(3)时间复杂度:O(n^2) 空间复杂度:O(1)
2.快速排序:快速排序是十分常用的高效率算法
(1)基本思想:先选一个‘标尺’,用它把整个队列过一遍筛子,以保证,其左边的元素都不大于他,其右边的元素都不小与他。
这样,排序问题就被分割为两个子区间,再分别对子区间排序就可以了。
(2)c++实现代码:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<algorithm>
using namespace std;
int partitions(int a[],int beg,int en){
int key=a[beg];
int i=beg,j=en;
while