C++基础:排序算法(包括冒泡、插入、选择、希尔、快排、并归、堆排序、桶排序),快排也是面试中常问的基础算法题。
虽然C++模板中提供了sort轮子,可以去直接使用,但是理解基础还是很重要的。冒泡排序:大致思路就是将相邻的两个进行比较,符合条件就进行数据交换。每循环一次,就会将一个最大值(或者最小值)排好位置。
N个数据需要进行N-1次循环,每次循环则有N-i-1次交换数据的机会。 本文采用的是正序排列数值。
/* Bubble Sort 冒泡排序。
*/
#include <iostream>
using namespace std;
void bubbleSort(int num[],int len){
for(int i = 0;i<len-1;i++){
for(int j=0;j<len-i-1;j++){
if(num[j]>num[j+1]){
swap(num[j],num[j+1]);
}
}
}
for(int i = 0;i<len;i++){
cout << num[i]<<" ";
}
cout<<endl;
}
void swap(int &a,int &b){ //数据交换常用的三种方式:1、值交换 2、引用交换 3、指针交换
int temp;
temp = a;
a = b;
b = temp;
}
int main(){
int num[] = {11,53,23,30,63,27,54,71};
int len = sizeof(num)/sizeof(num[0]);
cout << "排序前:";
for(int i = 0;i<len;i++){
cout << num[i]<<" ";
}
cout << endl;
cout << "排序后:";
bubbleSort(num,len);
return 0;
}