shell希尔排序

来源:互联网 发布:大乐透机选软件 编辑:程序博客网 时间:2024/05/29 17:14

#include <iostream>
using namespace std;

#define NUM 10

void ShellSort(int r[],int n)
{
 int d = n;
 int d1;
 int i;
 int j;
 int x;

 while (d>=1)
 {
  d1 = d/2;
  d = d1;
 
  for (i=d1;i<n;i++)
  {
   x = r[i];
   for (j=i-d1;j>=0;j-=d1)
   {
    if (r[j]>x)
    {
     r[j+d1] = r[j];
    }
    else
     break;
   }
   r[j+d1] = x;
  }
 }
}


void Print(int r[],int n)
{
 int i;
 for (i=0;i<n;i++)
 {
  cout << r[i] << ",";
 }
 cout << endl;
}


int main()
{
 int arr[NUM];
 int i;

 srand(1);
 for (i=0;i<NUM;i++)
 {
  arr[i] = rand()%100;
 }
 cout << "output arrey before sorting:" << endl;
 Print(arr,sizeof(arr)/sizeof(int));
 ShellSort(arr,sizeof(arr)/sizeof(int));
 cout << "output arrey after sorting:" << endl;
 Print(arr,sizeof(arr)/sizeof(int));

  return 0;

}

原创粉丝点击