从0备战GPLT
第七天
排序
1.选择排序
2.冒泡排序
3.插入排序
4.桶排序
桶排序 (Bucket sort) 或所谓的 箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。
代码实现:
#include<iostream>
using namespace std;
void bucketSort(int a[],int lenth)
{
int i;
int bucket[10001] = { 0 };
for (i = 0; i < lenth; i++)
{
bucket[a[i]]++;
}
int point = 1;
for (i = 0; i < 10001; i++)
{
if (bucket[i]&&point)
{
cout << i;
bucket[i]--;
point = 0;
}
while (bucket[i] && point==0)
{
cout << " " << i;
bucket[i]--;
}
}
}
int main(void)
{
int bucket[11] = { 10,5,7,4,3,2,1,8,6,9,5 };
bucketSort(bucket, 11);
}
5.快速排序
快速排序(Quicksort) 是对冒泡排序算法的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
代码实现:
#include<iostream>
using namespace std;
void quickSort(double num[],int left, int right)
{
double *p;
p = num;
int i, j;
double t, temp;
if (left > right)
return;
temp = num[left];
i = left;
j = right;
while (i != j)
{
while (num[j] >= temp&&i<j)
j--;
while (num[i] <= temp&&i<j)
i++;
t = *(p + i);
*(p + i) = *(p + j);
*(p + j) = t;
}
*(p + left) = *(p + i);
*(p + i) = temp;
quickSort(num,left, i - 1);
quickSort(num,i + 1, right);
}
int main(void)
{
int i, n;
double num[1001];
cin >> n;
for (i = 0; i < n; i++)
{
cin >> num[i];
}
quickSort(num, 0, n-1);
for (i = 0; i < n; i++)
cout << num[i] << " ";
return 0;
}