标签:排序算法
<span style="font-size:18px;">#include <iostream>
using namespace std;
void BubbleSort(int array[],int length){
//排序次数比数组长度小1
bool flag=true;
for(int i=0;i<length-1&&flag;i++){ //若flag为false,则退出循环
flag=false; //初始为fasle
for(int j=0;j<length-i-1;j++){
if(array[j]>array[j+1]){
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
flag=true; //如果发生了数据交换,则flag为true
}
}
}
}
int main(){
int array[]={12,4,16,15,17,1,19,6};
BubbleSort(array,8);
for(int i=0;i<8;i++){
cout<<array[i]<<" ";
}
cout<<endl;
return 0;
}</span>
<span style="font-size:18px;">#include <iostream>
using namespace std;
void SimpleSelectSort(int array[],int length){
int min;//最小元素下标
//排序次数比数组长度小1
for(int i=0;i<length-1;i++){
min=i;//将当前下标定义为最小值下标
//一趟排序找到当前未排序记录关键字的最小值
for(int j=i+1;j<length;j++){
if(array[min]>array[j])
min=j;
}
if(min!=i){ //最小值不是当前i下标值,则交换
int temp=array[i];
array[i]=array[min];
array[min]=temp;
}
}
}
int main(){
int array[]={12,4,16,15,17,5,19,2};
SimpleSelectSort(array,8);</span><pre name="code" class="cpp"><span style="font-size:18px;"><span style="white-space: pre;"> </span>for(int i=0;i<8;i++){</span> cout<<array[i]<<" ";}cout<<endl;return 0;}
#include <iostream>
using namespace std;
void DirectInsertSort(int array[],int length){
//排序次数比数组长度小1
for(int i=1;i<length;i++){
if(array[i]<array[i-1]){ //为true才需要真正排序
int temp=array[i]; //设置哨兵
int j=i-1;
//寻找插入位置,当前j值的后一个位置是插入位置
while(j>=0&&temp<array[j]){
array[j+1]=array[j];
j--;
}
array[j+1]=temp;
}
}
}
int main(){
int array[]={12,4,16,15,17,5,19,2};
DirectInsertSort(array,8);
for(int i=0;i<8;i++){
cout<<array[i]<<" ";
}
cout<<endl;
return 0;
}时间复杂度分析:最好时间复杂度O(n)、最坏和平均时间复杂度均为O(n^2)标签:排序算法
原文地址:http://blog.csdn.net/sxhlovehmm/article/details/44338553