大家知道数据结构有个排序的内容吧。我用C++写了一个希尔排序,但是我用C#却写不出来了,我感觉逻辑跟C++是一样的啊,为什么输出的时候有问题呢??调了半天也没有调出哪里出问题了,请各位帮帮忙。
using System;
using System.Collections.Generic;
using System.Text;
namespace shellSort
{
class Program
{
public static void swap(ref int a,ref int b)
{
int temp = a;
a = b;
b = a;
}
public static void shellSort(int[] p, int n)
{
int i, j, dis;
dis = n / 2;
while (dis > 0)
{
for (i = dis; i < n; ++i) //循环的次数
{
j = i - dis; //间距
while (j >= 0)
{
if (p[j] > p[j + dis])
swap(ref p[j] ,ref p[j + dis]);
j = j - dis;
}
}
dis = dis / 2;
}
}
static void Main(string[] args)
{
int[] arr = { 82, 16, 9, 95, 27, 75, 42, 69, 34};
shellSort(arr, arr.Length);
for (int i = 0; i < arr.Length; ++i)
Console.Write(" {0} ", arr[i]);
}
}
}