您的位置:首页 > 其它

排序 冒泡与选择

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: