关于几个复杂度为N^N的排序算法-冒泡,插入,选择(C++实现)
2016-11-26 10:25
405 查看
//程序是从低到高排序
#include <iostream>
using namespace std;
#include <string>
template <typename T,int size>
void sort_maopao(T *p){
T tmp;
int i,j;
//冒泡的i指的是当次冒泡在第i个位置停止(后面的都是从小到大排好序的),即从p[0] VS p[1]--->p[i] VS p[i+1]
//当次最大结果放在p[j+1],也就是p[i+1]可以定下来。
for (i=size-2;i>=0;i--){
for (j=0;j<=i;j++){
if(p[j]>p[j+1]){
tmp=p[j];
p[j]=p[j+1];
p[j+1]=tmp;
}
}
}
}
template <typename T,int size>
void sort_insert(T *p){
T tmp;
int i,j;
//i是指第i位要插入的数,说明前i-1位已经按照从小到大的顺序排好队
//用while循环,p指针指向希望比较的两个数的前者(所以一开始应该是j=i-1),直到j=0.在这之前肯定能找到相应的位置
for (i=0;i<size;i++){
j=i-1;
while(j>=0&&p[j]>p[j+1]){
tmp=p[j];
p[j]=p[j+1];
p[j+1]=tmp;
j--;
}
}
}
template <typename T ,int size>
void sort_choose(T *p){
int i,j;
T tmp;
//选择排序是最简单的一种,建议新手使用(我就是新手),i表示第i个位置,前面i-1个已经按顺序排好,只要将i后面的数,逐一跟第i个比较,进行替换即可。
for(i=0;i<size;i++){
for(j=i;j<size;j++){
if(p[i]>p[j]){
tmp=p[i];
p[i]=p[j];
p[j]=tmp;
}
}
}
}
//测试数据,可忽略
int main()
{
int k=0;
char a[28]={"CaichunqingisAbeautifulGirl"};
char a1[28]={"CaichunqingisAbeautifulGirl"};
char a2[28]={"CaichunqingisAbeautifulGirl"};
sort_insert<char,27>(a);
sort_maopao<char,27>(a1);
sort_choose<char,27>(a2);
for(k=0;k<28;k++){
cout<<a[k];
}
cout<<endl;
for(k=0;k<28;k++){
cout<<a1[k];
}
cout<<endl;
for(k=0;k<28;k++){
cout<<a2[k];
}
}
#include <iostream>
using namespace std;
#include <string>
template <typename T,int size>
void sort_maopao(T *p){
T tmp;
int i,j;
//冒泡的i指的是当次冒泡在第i个位置停止(后面的都是从小到大排好序的),即从p[0] VS p[1]--->p[i] VS p[i+1]
//当次最大结果放在p[j+1],也就是p[i+1]可以定下来。
for (i=size-2;i>=0;i--){
for (j=0;j<=i;j++){
if(p[j]>p[j+1]){
tmp=p[j];
p[j]=p[j+1];
p[j+1]=tmp;
}
}
}
}
template <typename T,int size>
void sort_insert(T *p){
T tmp;
int i,j;
//i是指第i位要插入的数,说明前i-1位已经按照从小到大的顺序排好队
//用while循环,p指针指向希望比较的两个数的前者(所以一开始应该是j=i-1),直到j=0.在这之前肯定能找到相应的位置
for (i=0;i<size;i++){
j=i-1;
while(j>=0&&p[j]>p[j+1]){
tmp=p[j];
p[j]=p[j+1];
p[j+1]=tmp;
j--;
}
}
}
template <typename T ,int size>
void sort_choose(T *p){
int i,j;
T tmp;
//选择排序是最简单的一种,建议新手使用(我就是新手),i表示第i个位置,前面i-1个已经按顺序排好,只要将i后面的数,逐一跟第i个比较,进行替换即可。
for(i=0;i<size;i++){
for(j=i;j<size;j++){
if(p[i]>p[j]){
tmp=p[i];
p[i]=p[j];
p[j]=tmp;
}
}
}
}
//测试数据,可忽略
int main()
{
int k=0;
char a[28]={"CaichunqingisAbeautifulGirl"};
char a1[28]={"CaichunqingisAbeautifulGirl"};
char a2[28]={"CaichunqingisAbeautifulGirl"};
sort_insert<char,27>(a);
sort_maopao<char,27>(a1);
sort_choose<char,27>(a2);
for(k=0;k<28;k++){
cout<<a[k];
}
cout<<endl;
for(k=0;k<28;k++){
cout<<a1[k];
}
cout<<endl;
for(k=0;k<28;k++){
cout<<a2[k];
}
}
相关文章推荐
- 常见排序算法(冒泡、选择、插入、快速、归并C++实现)
- 常用排序算法的c++实现(冒泡,选择,插入,堆,shell,快速,归并 )与sort()对比
- 常见排序算法C++实现(冒泡,直接插入,希尔,堆,归并,简单选择,快排)
- 自己动手实现数据结构——排序算法1(冒泡、插入、归并、简单选择)(C++实现)
- 排序算法总结与C++实现(冒泡、简单选择、直接插入、堆、归并、快速)
- 常见排序算法总结与实现(冒泡、插入、选择、希尔、堆排序、归并、快排)
- 常见排序算法总结与实现(冒泡、插入、选择、希尔、堆排序、归并、快排)
- C++排序算法总结(冒泡、插入、选择、希尔、归并、快速、堆)
- 常见的排序算法(Java实现):冒泡、插入、选择、快速排序
- js实现排序算法——插入,选择,冒泡,快排
- c++实现冒泡,选择,插入,快速排序
- java排序算法代码实现(冒泡、选择、插入)
- 6种排序算法的简洁实现:冒泡、选择、插入、归并、快速、堆
- js实现排序算法(冒泡、选择、插入、二分插入、快速)
- 冒泡,插入,选择,归并,快速排序的C++实现
- 三种初级排序算法(冒泡、选择、直接插入)java实现及其性能比较
- 排序算法的实现(冒泡,选择,插入 O(N*N)--理解方法实现
- 排序算法C++11实现——冒泡、选择、插入、希尔、堆、合并、快速排序(非递归)
- 请用Java实现冒泡、插入、选择排序中的任意一个排序算法。
- 基础排序算法 java 实现(冒泡、选择、插入、快排、归并、堆排)