1.原理剖析
排序原理:
排序是基于比较元素之间的大小关系来确定它们在排序后的顺序。常见的比较排序算法有冒泡排序,插入排序。选择排序,快速排序,归并排序等。
例如冒泡排序,它重复地走访要排序的数列,一次比较俩个元素,如果他们的排序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
2.实现
冒泡排序实现:
#include <stdio.h>
int main()
{
int i, j, p, t, a[10];
for (i=0;i<10;i++)
scanf("%d", &a[i]);
for (i=0;i<10;i++)
{
p=i;
for (j=i+1;j<10;j++)
if (a[j]<a[p])
p=j;
if (i!=p)
{ t=a[i]; a[i]=a[p]; a[p]=t; }
printf("%8d",a[i]);
}
return 0;
}
3.优化
冒泡排序优化:
可以设置一个标志位,如果在一轮比较中没有发生交换,说明数列已经有序,可以提前结束排序。
void optimizedBubbleSort(int arr[], int n) {
bool swapped;
for (int i = 0; i < n - 1; i++) {
swapped = false;
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swapped = true;
}
}
if (swapped == false) {
break;
}
}
}
快速排序优化:
当代排序序列的规模比较小时,可以采用插入排序简单排序算法来提高效率,因为对于小规模数据,简单排序算法的常数项较小。
可以通过三数取中来选择更好的曲轴元素,避免最坏情况发生。

3399

被折叠的 条评论
为什么被折叠?



