概述
任务:用C++实现希尔排序
代码如下:
#include <iostream>
#include <vector>
#define num 10
using namespace std;
void Print(int a[], int len);//打印数组信息
void Insert_Sort(int a[], int len);//简单插入排序算法(从小到大排序)
void Shell_Sort(int a[], int len);//希尔排序(从小到大排序)
int main()
{
int a[num] = { 6,23,-5,89,65,23,45,68,0,-45 };
//打印初始数组a
cout << "before sort: ";
Print(a, num);
//希尔排序
Shell_Sort(a, num);
//打印排序后的数组a
cout << "after sort: ";
Print(a, num);
while (1);
return 0;
}
//打印数组信息
void Print(int a[], int len)
{
for (int i = 0; i < len; i++)
{
cout << a[i] << " ";
}
cout << endl;
}
//简单插入排序算法(从小到大排序)
void Insert_Sort(int a[], int len)
{
int temp;
int j;
for (int i = 1; i < len; i++)
{
temp = a[i];
j = i - 1;
while (j >= 0 && a[j] > temp)
{
a[j + 1] = a[j];
j--;
}
a[j + 1] = temp;
Print(a, 10);
}
}
//希尔排序算法(从小到大排序)
void Shell_Sort(int a[], int len)
{
int temp;
int j;
//定义增量gap
int gap = len/2;
while (gap >= 1)
{
for (int i = gap; i < len; i++)
{
temp = a[i];
j = i - gap;
while (j >= 0 && a[j] > temp)
{
a[j + gap] = a[j];
j-=gap;
}
a[j + gap] = temp;
Print(a, 10);
}
//每次循环完成,增量减半
gap = gap / 2;
}
}
最后
以上就是生动纸飞机为你收集整理的数据结构与算法:希尔排序的C++实现的全部内容,希望文章能够帮你解决数据结构与算法:希尔排序的C++实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复