桶排序
桶排序就是用数组的下标记录这个数,这样就可以记录到很大的数
然后在用数组的值去表示有几个相同的这个数(下标)
最后再用for循环把这些数输出 for(i=0;i<下标;i++)(从小到大)//for(i=下标-1;i>=0;i–)(从大到小)
代码实现
#include <iostream>
using namespace std;
int main()
{
int i,j,a[100],t,n;
for(i=0; i<100; i++)
a[i]=0;
cin>>n;//输入数的个数
for(i=0;i<n;i++)
{
cin>>t;
a[t]++;
}
for(i=0;i<100;i++)
{
for(j=0;j<a[i];j++)
cout<<i<<" ";
}
return 0;
}
冒泡 选择
选择排序
原理:把待排序的n个元素看作有序部分和无序部分,依次选出第i小的元素。
1. 开始时有序部分为空,无序部分包含n个元素。
2.排序时每次从无序部分中选出最小的元素,把它与无序部分的第一个元素交换位置,那么该元素必大于(或等于)有序部分中的所有元素,从而使有序部分元素个数增1,无序部分元素个数减1。
3.经过n-1次选择和交换后,有序部分有n-1个元素,无序部分只有1个元素,且该元素大于(或等于)有序部分中的所有元素,整个排序过程结束。
#include <bits/stdc++.h>
using namespace std;
#define len 5
int main()
{
int a[len]= {1,5,4,4,3};
for(int i=0; i<=len; i++)
for(int j=i+1; j<len; j++)
{
if(a[i]>a[j])
{
int t=a[j];
a[j]=a[i];
a[i]=t;
}
}
for(int i=0; i<len; i++)
cout<<a[i];
return 0;
}
冒泡排序
通过相邻元素之间的比较和交换使较小的元素逐渐从后向前移动,就像水底的气泡一样逐渐向上冒。具体过程如下:
-
首先比较d[n]和d[n-1], 若d[n]<d[n-1],则交换,使较小的元素前移,较大的元素后移;接着比较d[n-1]和d[n-2],以此类推,直 到比较d[2]和d[1]并使较小的元素前移,第一趟排序结束,则d[1]为最小的元素。
-
然后在d[2].d[n]间进行第二趟排序,使第二小元素前移到d[2]位置; n-1趟排序后,整个冒泡排序结束。
#include <bits/stdc++.h>
using namespace std;
#define len 5
int main()
{
int a[len]= {1,5,4,4,3};
for(int i=0; i<len-1; i++)
for(int j=len-1; j>i; j--)
{
if(a[j]<a[j-1])
{
int t=a[j];
a[j]=a[j-1];
a[j-1]=t;
}
}
for(int i=0; i<len; i++)
cout<<a[i];
return 0;
}