C语言-排序算法+C语言例程
Posted 每天进步一点点的小李
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言-排序算法+C语言例程相关的知识,希望对你有一定的参考价值。
https://www.runoob.com/cprogramming/c-sort-algorithm.html
①插入排序
插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到 {displaystyle O(1)} {displaystyle O(1)}的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
void insertion_sort(int arr[], int len){
int i,j,temp;
for (i=1;i<len;i++){
temp = arr[i];
for (j=i;j>0 && arr[j-1]>temp;j--)
arr[j] = arr[j-1];
arr[j] = temp;
}
}
②希尔排序
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。
希尔排序是基于插入排序的以下两点性质而提出改进方法的:
1、插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;
2、但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位
void shell_sort(int arr[], int len) {
int gap, i, j;
int temp;
for (gap = len >> 1; gap > 0; gap = gap >> 1)
for (i = gap; i < len; i++) {
temp = arr[i];
for (j = i - gap; j >= 0 && arr[j] > temp; j -= gap)
arr[j + gap] = arr[j];
arr[j + gap] = temp;
}
}
C语言例程(六)
①创建函数并进行调用
void hello_world(void)
{
printf("Hello world! ");
}
void three_timeshello(void)
{
int counters;
for (counters = 1; counters <= 3; counters++)
hello_world();
}
int main(void)
{
three_timeshello();
}
②学习使用按位与 &
int main()
{
int a, b;
a = 077;
b = a & b;
printf("a与b为:%d ", b);
b &= 7;
printf("a与b为:%d ", b);
return 0;
}
③学习使用按位或 |
int main()
{
int a, b;
a = 077;
b = a | 3;
printf("b的值为:%d ", b);
b |= 7;
printf("b的值为:%d ", b);
return 0;
}
④学习使用按位异或 ^
int main()
{
int a, b;
a = 077;
b = a ^ 3;
printf("b 的值为 %d ", b);
b ^= 7;
printf("b 的值为 %d ", b);
return 0;
}
以上是关于C语言-排序算法+C语言例程的主要内容,如果未能解决你的问题,请参考以下文章