文章
20
粉丝
224
获赞
56
访问
136.7k
这题除了一趟希尔排序后的结果和一趟二路归并排序后的结果需要另外处理外,其他结果都可以直接用sort函数解决,但是这里我们还是来回顾一下题目提到的各种排序算法,即编写对应的排序算法函数来解决,不过对于一趟二路归并排序,我是直接交换相邻元素来实现的,因为没想到怎么在递归的二路归并函数中实现
#include<stdio.h>
// 直接插入排序
void InsertionSort(int arr[], int len) {
for (int i=1; i<len; ++i) {
int index = i-1;
int current = arr[i];
while (index>=0 && current<arr[index]) {
arr[index+1] = arr[index];
--index;
}
arr[index+1] = current;
}
}
// 一趟希尔排序
void ShellSortOneTime(int arr[], int len) {
int temp, increment=5;
for (int i=increment; i<len; ++i) {
if (arr[i-increment] > arr[i]) {
temp = arr[i];
int index = i-increment;
while (index>=0 && temp<arr[index]) {
arr[index+increment] = arr[index];
index -= increment;
}
arr[index+increment] = temp;
}
}
}
// 直接选择排序
void SelectionSort(int arr[], int len) {
int temp;
for (int i=0; i<len-1; ++i) {
int minx = i;
for (int j=i+1; j<len; ++j) {
if (a...
登录后发布评论
暂无评论,来抢沙发