快速排序~~程序有点不理解~~ 因为后面的 do i++ 部分,因为第一次执行循环时会先+1的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 i = left-1; j = right +1;do{do i++; while (l[i] < l[left]); 用这么绕么?static void QuickSort(int[] a, int l, int r) { int left = l; int right = r; int pivot = a[(l + r) / 2]; int temp; while (l < r) { while (a[l] < pivot) { ++l; } while (a[r] > pivot) { --r; } if (l >= r) break; temp = a[l]; a[l] = a[r]; a[r] = temp; if (a[l] != pivot) { ++l; } if (a[r] != pivot) { --r; } } if (left < r) { QuickSort(a, left, l - 1); } if (l < right) { QuickSort(a, r + 1, right); } } static void Main(string[] args) { int[] aa ={ 74, 5, 78, 2, 46, 32, 10, 97, 34 }; QuickSort(aa, 0, 8); for (int i = 0; i < aa.Length; i++) { Console.WriteLine(aa[i]); } Console.Read(); } 因为left已经走到right右边(下一位)去了。 第一轮的时候,不就应该是将下标为0的元素作为分割元素,然后从下标为1的元素向后找么,那么left被赋值为0,然后i=left时,i=0;进人下面的循环,i++不正好变为1么 as 的用法问题 C#隐藏进程 求关于WORD方面的资料 Dictionary泛型如何做参数使用 Excel合并单元格不成功!(急死人!) 问一个winform下datagrid的问题 我安装的vs2003中怎么找不到水晶报表设计器??大家都来帮哈忙,菜鸟请教哈 做个调查,有多少人写代码时给等号“=”两边都留空格的 wpf中,如何使用动画实现七彩泡泡类似的效果? 求助,C#操作sql完整的方法怎样?附疑问一个 新人送小分,高手别嫌少。怎么把dataset 导入xml(不是一般的欧~) 百分求问MonthCalendar的自定义问题
j = right +1;
do
{
do i++; while (l[i] < l[left]);
{
int left = l;
int right = r;
int pivot = a[(l + r) / 2];
int temp;
while (l < r)
{
while (a[l] < pivot) { ++l; }
while (a[r] > pivot) { --r; }
if (l >= r) break;
temp = a[l];
a[l] = a[r];
a[r] = temp;
if (a[l] != pivot) { ++l; }
if (a[r] != pivot) { --r; }
}
if (left < r) { QuickSort(a, left, l - 1); }
if (l < right) { QuickSort(a, r + 1, right); }
}
static void Main(string[] args)
{
int[] aa ={ 74, 5, 78, 2, 46, 32, 10, 97, 34 };
QuickSort(aa, 0, 8);
for (int i = 0; i < aa.Length; i++)
{
Console.WriteLine(aa[i]);
}
Console.Read();
}