排序 冒泡与选择
2008-04-16 22:23
239 查看
#include "stdafx.h"
#include <iostream>
using namespace std;
//
void printList(int list[],int len);
//冒泡排序
void sort_m(int listSrc[],int len)
{
for (int i = 0 ;i < len ; i++ )
{
for (int j = 0 ; j < len-i-1 ; j++)
{
if (listSrc[j] > listSrc[j+1])
{
int value = listSrc[j] ;
listSrc[j] = listSrc[j+1] ;
listSrc[j+1] = value;
}
}
}
}
//选择排序
void sort_s(int list[],int len)
{
for (int i = 0 ; i < len ; i++)
{
int minSig = i;
for (int j = i + 1 ;j< len ;j++)
{
if (list[minSig] < list[j])
{
minSig = j;
}
}
int tempValue = list[i] ;
list[i] = list[minSig];
list[minSig] = tempValue;
}
}
//快速排序
int Partition(int *R,int i,int j)
{
int pivot=R[i];
while(i<j)
{
while(i<j&&R[j]>pivot)
j--;
if(i<j)
R[i++]=R[j];
while(i<j&&R[i]<pivot)
i++;
if(i<j)
R[j--]=R[i];
}
R[i]=pivot;
return i;
}
void sort_q(int *R,int low,int high)
{
int pivotpos;
if(low<=high)
{
pivotpos=Partition(R,low,high);
sort_q(R,low,pivotpos-1);
sort_q(R,pivotpos+1,high);
}
}
//插入排序
void sort_i(int list[],int len)
{
int i ;
for(i = 1;i<len;i++)
{
int temp = list[i];
int j = i-1;
while((j >=0 ) && temp > list[j])
{
list[j +1] = list[j];
j--;
}
list[j+1] = temp;
}
}
int main( )
{
int list[]={99,1,7,5,8,4,7,5,5,9,78,1,-2,-5,-200,80,-90,-2};
int len = sizeof(list)/sizeof(list[0]);
printList(list,len);
cout<<"-------------------"<<endl;
cout<<"插入排序"<<endl;
sort_i(list,len);
printList(list,len);
cout<<"快速排序"<<endl;
sort_q(list,0,len);
printList(list,len);
cout<<"选择排序"<<endl;
sort_s(list,len);
printList(list,len);
cout<<"冒泡排序"<<endl;
sort_m(list,len);
printList(list,len);
int k;
cin>>k;
return 0;
}
void printList(int list[],int len)
{
for (int i = 0 ;i < len ; i++ )
{
cout<< list[i] << "," ;
}
cout<<endl;
}
#include <iostream>
using namespace std;
//
void printList(int list[],int len);
//冒泡排序
void sort_m(int listSrc[],int len)
{
for (int i = 0 ;i < len ; i++ )
{
for (int j = 0 ; j < len-i-1 ; j++)
{
if (listSrc[j] > listSrc[j+1])
{
int value = listSrc[j] ;
listSrc[j] = listSrc[j+1] ;
listSrc[j+1] = value;
}
}
}
}
//选择排序
void sort_s(int list[],int len)
{
for (int i = 0 ; i < len ; i++)
{
int minSig = i;
for (int j = i + 1 ;j< len ;j++)
{
if (list[minSig] < list[j])
{
minSig = j;
}
}
int tempValue = list[i] ;
list[i] = list[minSig];
list[minSig] = tempValue;
}
}
//快速排序
int Partition(int *R,int i,int j)
{
int pivot=R[i];
while(i<j)
{
while(i<j&&R[j]>pivot)
j--;
if(i<j)
R[i++]=R[j];
while(i<j&&R[i]<pivot)
i++;
if(i<j)
R[j--]=R[i];
}
R[i]=pivot;
return i;
}
void sort_q(int *R,int low,int high)
{
int pivotpos;
if(low<=high)
{
pivotpos=Partition(R,low,high);
sort_q(R,low,pivotpos-1);
sort_q(R,pivotpos+1,high);
}
}
//插入排序
void sort_i(int list[],int len)
{
int i ;
for(i = 1;i<len;i++)
{
int temp = list[i];
int j = i-1;
while((j >=0 ) && temp > list[j])
{
list[j +1] = list[j];
j--;
}
list[j+1] = temp;
}
}
int main( )
{
int list[]={99,1,7,5,8,4,7,5,5,9,78,1,-2,-5,-200,80,-90,-2};
int len = sizeof(list)/sizeof(list[0]);
printList(list,len);
cout<<"-------------------"<<endl;
cout<<"插入排序"<<endl;
sort_i(list,len);
printList(list,len);
cout<<"快速排序"<<endl;
sort_q(list,0,len);
printList(list,len);
cout<<"选择排序"<<endl;
sort_s(list,len);
printList(list,len);
cout<<"冒泡排序"<<endl;
sort_m(list,len);
printList(list,len);
int k;
cin>>k;
return 0;
}
void printList(int list[],int len)
{
for (int i = 0 ;i < len ; i++ )
{
cout<< list[i] << "," ;
}
cout<<endl;
}
相关文章推荐
- java冒泡_选择_插入三大排序
- 冒泡,简单选择,直接插入排序(Java版)
- 数据结构排序--冒泡与选择
- 算法分析之冒泡,快速,选择排序
- 冒泡排序、选择排序、快速排序、二分法查找
- 三大基本排序冒泡、插入、选择
- 冒泡,插入,选择排序
- Java算法之排序(快速,冒泡,归并,选择)
- 简单排序:冒泡、选择、插入
- 插入 | 希尔 | 冒泡 | 快速 | 选择 | 归并排序
- 排序总结:插入(简单和改进)、希尔、选择、冒泡、快速、堆排序、归并排序
- C#实现简单的冒泡、选择排序以及二分查找法
- 排序(选择,冒泡,二分法)、进制转换
- c - 冒泡/选择排序.
- 排序(一)冒泡排序、冒泡改进——鸡尾酒排序、选择排序
- c# 排序 算法 函数 冒泡 选择 插入 希尔
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,快速排序
- 简单的排序--冒泡、选择、插入
- javascript数据结构与算法--基本排序算法(冒泡、选择、排序)及效率比较
- 简单排序--选择、冒泡、插入