资源简介
七种排序算法(包括直接插入排序,折半插入排序,希尔排序,冒泡排序,快速排序,简单选择排序,归并排序)
还有两道题
1./*设计并实现一个有效的对n个整数重排的算法,使得所有负数位于非负数之前,给出算法的性能分析*/
2./*试给出一个同时找到n个元素中最大元素与最小元素的有效算法,并说明理由*/
代码片段和文件信息
#include
#include
#include
#include
#include
using namespace std;
#define max(ab) ((a)>(b)?(a):(b))
#define min(ab) ((a)<(b)?(a):(b))
class Array
{
public:int *data;
int size;
Array()
{data=NULL;size=0;}
~Array()
{
delete [] data;
}
void show()
{
for(int i=0;i {
cout< }cout< }
Array(int n)
{
data=new int[n];size=n;
int i;
for(i=0;i {
data[i]=-rand()%201+100;
}
}
void InsertionSort()//直接插入排序
{
int pi;
for(p=1;p {
int temp=data[p];
i=p-1;
while(i>=0&&data[i]>temp)
{
data[i+1]=data[i];i--;
}
data[i+1]=temp;
}cout<<“直接插入排序:“< }
void BinaryInsertionSort()//折半插入排序
{
int leftmidrightiptemp;
for(p=1;p {
temp=data[p];
left=0;right=p-1;
while(left<=right)
{
mid=(left+right)/2;
if(data[mid]>temp)
{right=mid-1;}
else{left=mid+1;}
}
for(i=p-1;i>=left;i--)
{
data[i+1]=data[i];
}data[left]=temp;
}cout<<“折半插入排序:“< }
void ShellSort()//希尔排序
{cout<<“希尔排序:“< int d=size/2ktempij;
while(d>=1)
{
for(k=0;k {
for(i=k+d;i {
temp=data[i];j=i-d;
while(j>=k&&data[j]>temp)
{
data[j+d]=data[j];
j-=d;
}
data[j+d]=temp;
}
}d=d/2;
}
}
void BubbleSort()//冒泡排序
{cout<<“冒泡排序:“< int flag=0ij;
for(i=0;i {
flag=0;
for(j=1;j {
if(data[j] {swap(data[j]data[j-1]);flag=1;}
}if(flag==0)
{return;}
}
}
int Partition(int startint end)//快速分割策略
{
int pivot=data[start]leftright;
left=start;right=end;
while(left<=right)
{
while(left<=right&&data[left]<=pivot){left++;}
while(left<=right&&data[right]>pivot){right--;}
if(left {
swap(data[left]data[right]);left++;right--;
}
}
swap(data[start]data[right]);
return right;
}
void QuickSort(int leftint right)//快速排序
{
if(left {
int p=Partition(leftright);
QuickSort(leftp-1);
QuickSort(p+1right);
}
}
void SelectionSort()//简单选择排序
{cout<<“简单选择排序:“< int ikj;
for(i=1;i {
k=i-1;
for(j=i;j
- 上一篇:密码学差分密码解密程序实现
- 下一篇:矩阵的三角分解c程序
相关资源
- 用C语言实现成绩表的快速排序程序设
- 冒泡排序MFC实现
- c++ 冒泡排序
- 基于MFC编程的冒泡排序动态演示
- 算法设计实验报告-快速排序和归并排
- 使用双向链表实现快速排序,C语言
- 数据结构c语言版快速排序实验报告
- n个数冒泡排序法
- 排序算法综合:有直接插入排序,希
- C++实现快速排序
- 三种排序算法测试实验包括插入排序
- C语言写的冒泡排序程序,从文件读出
- 排序算法的实现与比较
- 快速排序-改进的枢轴元素-三者取中算
- 随机生成10000数字,进行快速排序
- 高级冒泡排序高级(c语言)
- c++ 数组冒泡排序
- C++实战源码-数组冒泡排序法
- c++ 冒泡排序法
- 冒泡排序法
- 冒泡排序,完整实现排序过程
- 直接插入排序法、冒泡排序法、直接
- 选择/插入/冒泡排序的综合应用。
- 直接插入排序、折半排序、shell排序、
- 7种常用排序算法实现C++冒泡排序、选
- 分治法实现的快速排序
- 归并排序、插入排序、归并排序、冒
- 100000个数冒泡法、插入法、选择法、
评论
共有 条评论