资源简介

数据结构课程设计 包括以下算法:直接插入排序,希尔排序,冒泡排序,快排,简单选择排序,堆排序。完整DOC文档,含源代码,还有执行结果,完整的实验报告

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
#define MAX 10000
//long Max;
long dlta[10000];
int a[MAX+1];
int store[MAX+1];
long  int com0=0mov0;
long  int com1=0mov1=0;
long  int com2=0mov2=0;
long  int com3=0mov3=0;
long  int com4=0mov4=0;
long  int com5=0mov5=0;
double t0t1t2t3t4t5;
void randomizeNum(int n)
{//N表示要产生的随机数的数目
 long i;
 for(i=0;i {
 a[i]=rand()%20000;
     store[i]=a[i];
 //printf(“%5d“store[i]);
 }
 printf(“\n“);
}
void restore(long n)//将随机产生的数据存储在数组中
{
long i;
    for(i=0;i {
a[i]=store[i];
}
}
//起泡排序
void bubblesort(int r[]long n)
{
long ij;
    long w;
//long int com0=0mov0=0;
for(i=0;i<=n-1;i++)
for(j=n-1;j>=i+1;j--)
{
if(r[j] {
w=r[j];
        r[j]=r[j-1];
        r[j-1]=w;
mov0=mov0+3;
}
com0++;
}
printf(“\n起泡排序 比较次数等于  %ld移动次数等于   %ld\n“com0mov0);
}
//直接插入排序
void insertsort(int r[]long n)
{
 long ij;
 int watch;
 //long int com1=0mov1=0;
 for(i=1;i { 
 com1++;
     if(r[i]  {
 watch=r[i];
         r[i]=r[i-1];
         mov1++; 
 for (j=i-2;watch  { 
 r[j+1]=r[j];
 com1++;
 }
 r[j+1]=watch;
 mov1++;
 }
 }
printf(“\ninsertsort compare= %ldmove= %ld\n“com1mov1);
}
//简单选择排序
void selectsort(int r[]long n)
 {     
  int ijktemp;
  for(i=0;i   {
  k=i;
  for (j=i+1;j   {
  com2++;
          if(r[j]   k=j; 
  }
  temp=r[i];
      r[i]=r[k];
      r[k]=temp;
      mov2=mov2+3;
  }
  printf(“\nSelectSort compare= %ldmove= %ld\n“com2mov2);
}
//快速排序
int  Partition(int R[]int n int lowint high)
{   
int pivotkey;
    pivotkey=R[low];
    mov4++;
while(low {
while( (low=pivotkey))

--high;
    com4++;
}
R[low]=R[high];
        mov4++;
while( (low {
++low;
com4++;
}
R[high]=R[low];
        mov4++;
}
R[low]=pivotkey;
    mov4++;
return low;
}
void QSort(int R[]int n int lowint high)
{   
int pivotloc;
if (low {
pivotloc=Partition(Rnlowhigh);
        QSort(Rnlow pivotloc-1);
        QSort(Rn pivotloc+1high);
}
}
void QuickSort(int R[]int n)
{  
QSort(Rn0n-1);
    printf(“\nQuickSort compare=%ldmove=%ld\n“com1mov1);
}
//堆排序
void Sift(int R[] int s int m)
{//筛选算法
    int tempj;
    temp=R[s];mov5++;
    for(j=2*s;j<=m;j*=2)
{
if ((j {
j++;
com5++;
}
        com5++;
        if (temp>=R[j]) break;
        R[s]=R[j];
        mov5++;
        s=j;
}
    R[s]=temp;
    mov5++;
}
void HeapSort(int R[]long n)
{    
int itemp;
    for (i=n/2;i>=0;i--)//初始建堆
Sift(Rin);
for (i=n-1;i>=0;i--)
{
temp=R[0];
        R[0]=R[i];
        R[i]=temp;
        mov4=mov5+3;
        Sift(R0i-1);
}
printf(“\nHeapSort compare=%ldmo

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      15306  2009-05-03 20:37  内部排序\1.png

     文件      16714  2009-05-03 20:39  内部排序\2.png

     文件       3345  2009-05-03 20:41  内部排序\3.png

     文件      11573  2009-05-03 20:43  内部排序\4.png

     文件       6222  2009-05-03 20:44  内部排序\5.png

     文件      41984  2009-05-03 20:34  内部排序\Debug\vc60.idb

     文件      53248  2009-05-03 20:34  内部排序\Debug\vc60.pdb

     文件     249910  2009-05-03 20:34  内部排序\Debug\排序.exe

     文件     332836  2009-05-03 20:34  内部排序\Debug\排序.ilk

     文件      36600  2009-05-03 20:34  内部排序\Debug\排序.obj

     文件     615424  2009-05-03 20:34  内部排序\Debug\排序.pdb

     文件     321024  2010-03-10 19:26  内部排序\作业1.doc

     文件      10054  2009-05-03 20:34  内部排序\排序.cpp

     文件       3379  2009-05-03 20:21  内部排序\排序.dsp

     文件        516  2009-05-03 20:40  内部排序\排序.dsw

     文件      41984  2009-05-03 20:40  内部排序\排序.ncb

     文件      48640  2009-05-03 20:40  内部排序\排序.opt

     文件       1112  2009-05-03 20:34  内部排序\排序.plg

     文件     260428  2009-04-30 19:32  内部排序\排序算法比较.rar

     文件      26515  2009-05-03 12:50  内部排序\流程图.jpg

     目录          0  2010-03-10 19:21  内部排序\Debug

     目录          0  2010-03-11 11:45  内部排序

----------- ---------  ---------- -----  ----

              2096814                    22


评论

共有 条评论