#include <iostream>
using namespace std;
void show(int M[], int n)
{
for(int i=0; i<n; i++)
cout<<M[i]<<" ";
cout<<endl;
}
//快速排序
void quick_sort(int M[], int left, int right)
{
if(left < right)
{
int i,j,x;
i = left;
j = right;
x = M[i];
while(i<j)
{
while(i<j && M[j]>= x)
j--;
if(i<j)
M[i++] = M[j];
while(i<j && M[i]<= x)
i++;
if(i<j)
M[j--] = M[i];
}
M[i] = x;
quick_sort(M, left, i-1);
quick_sort(M, i+1, right);
}
}
//插入排序
void insert_sort(int M[], int n)
{
int i,j,tmp;
for(i=0; i<n; i++)
{
tmp = M[i]; //取一个新的数据tmp
for(j=i; j>0 && M[j-1]>tmp; j--)//将比数据tmp大的数据往后移动,直到找到比它的数据
M[j] = M[j-1]; // j指向的始终是一个空位置
M[j] = tmp;//将tmp放置在临界位置上
}
}
//冒泡排序
void bubble_sort(int M[], int n)
{
int i,j,k;
for(i=0; i<n; i++) //每次冒泡后 数组最末端数据已经是最大数据,下次不需要重复排序
for(j=0; j<n-i-1; j++)
{
if(M[j]>M[j+1])
{
k = M[j+1];
M[j+1] = M[j];
M[j] = k;
}
}
}
int main()
{
// 输入数据格式: 第一行 n 表示n个数据
// 接下里 输入 n个数据,举例如下:
// 5
// 1 3 5 2 4
freopen ("input.txt", "r", stdin); //可以从文件中读取数据输入,
//如果手动输入,注释该行
int n;
cin>>n;
int M[n];
for(int i =0; i<n; i++)
cin>>M[i];
show(M, n);
quick_sort(M, 0, n-1);
// insert_sort(M, n);
// bubble_sort(M, n);
show(M, n);
return 0;
}
排序算法-C++实现
猜你喜欢
转载自www.cnblogs.com/yeran/p/10959797.html
今日推荐
周排行