using System;namespace sort
{
/// <summary>
/// sort の概要の説明です。
/// </summary>
public class sort
{
private int low;
private int high;
private int[] A; public void QuickSort(int A, int low , int high)
{
if(low<high)
{
int pivotpos=Partition(A ,low , high) ; QuickSort(A, low , pivotpos-1);
QuickSort(A, pivotpos+1 ,high);
}
}
public int Partition(int[] A,int low ,int high) {
int i=low ;
int j=high; int pivot =A[i]; // 用区间的第 1 个记录作为基准 '
while(i!=j)
{
while (i<j&&A[j]>=pivot) //pivot 相当于在位置 i 上
j--; // 从右向左扫描,查找第 1 个关键字小于 pivot.key 的记录 low[j]
if(i<j) // 如果找到一个小于pivot的数;
A[i++]=A[j]; //low[i]和low[j]交换后,i指针加1;
while(i<j&&A[i]<=pivot) //pivot 相当于在位置 j 上
i++; // 从左向右扫描,查找第 1 个关键字大于 pivot 的记录low[i]
if(i<j) // 如果找到一个大于pivot的数;
A[j--]=A[i]; // 相当于交换 low[i] 和 low[j] ,交换后 j 指针减 1
}
A[i]=pivot; // 基准记录已被最后定位
return i ;
}
public class MainClass {
public static void Main() {
A = new int[] {9,8,7,4,3,35,4,5,3,21,1,4,57,2,123,4,0}; sort S = new sort();
S.QuickSort(A ,0,16);
for(int m=0; m<12;m++)
Console.Write(A[m]+ " ");
}
} }
}
{
/// <summary>
/// sort の概要の説明です。
/// </summary>
public class sort
{
private int low;
private int high;
private int[] A; public void QuickSort(int A, int low , int high)
{
if(low<high)
{
int pivotpos=Partition(A ,low , high) ; QuickSort(A, low , pivotpos-1);
QuickSort(A, pivotpos+1 ,high);
}
}
public int Partition(int[] A,int low ,int high) {
int i=low ;
int j=high; int pivot =A[i]; // 用区间的第 1 个记录作为基准 '
while(i!=j)
{
while (i<j&&A[j]>=pivot) //pivot 相当于在位置 i 上
j--; // 从右向左扫描,查找第 1 个关键字小于 pivot.key 的记录 low[j]
if(i<j) // 如果找到一个小于pivot的数;
A[i++]=A[j]; //low[i]和low[j]交换后,i指针加1;
while(i<j&&A[i]<=pivot) //pivot 相当于在位置 j 上
i++; // 从左向右扫描,查找第 1 个关键字大于 pivot 的记录low[i]
if(i<j) // 如果找到一个大于pivot的数;
A[j--]=A[i]; // 相当于交换 low[i] 和 low[j] ,交换后 j 指针减 1
}
A[i]=pivot; // 基准记录已被最后定位
return i ;
}
public class MainClass {
public static void Main() {
A = new int[] {9,8,7,4,3,35,4,5,3,21,1,4,57,2,123,4,0}; sort S = new sort();
S.QuickSort(A ,0,16);
for(int m=0; m<12;m++)
Console.Write(A[m]+ " ");
}
} }
}
解决方案 »
- 还是数组拼接
- datagridview中的combobox 如何实现联动
- 关于带有特殊字符的文件下载不了的问题
- 怎么读取exe程序内stringGraid内制定行列的内容
- C# 更新access问题!大侠请进
- 这样的查询怎么做?
- 请教如何使用mshtml,使得在C#里可以使用attachEvent向页面中的控件注册事件处理程序
- 动态dropdownlist的取值问题--跪谢!
- 虚拟目录明明存在,为什么 Parent.Children.Find("Sea","IIsVirtualDir"); 总是跑出错误hresult中的异常:0x80005008....
- 我以前学过语言,现在想学C#,请问如何入门呀
- DataGrid排序问题?急!!!
- 程序呼叫或引数不正确。
调试成功!using System;namespace sort
{
/// <summary>
/// sort の概要の説明です。
/// </summary>
public class sort
{
public int low;
public int high;
public int[] A; public void QuickSort(int[] A, int low , int high)
{
if(low<high)
{
int pivotpos=Partition(A ,low , high) ; QuickSort(A, low , pivotpos-1);
QuickSort(A, pivotpos+1 ,high);
}
}
public int Partition(int[] A,int low ,int high) {
int i=low ;
int j=high; int pivot =A[i]; // 用区间的第 1 个记录作为基准 '
while(i!=j)
{
while (i<j&&A[j]>=pivot) //pivot 相当于在位置 i 上
j--; // 从右向左扫描,查找第 1 个关键字小于 pivot.key 的记录 low[j]
if(i<j) // 如果找到一个小于pivot的数;
A[i++]=A[j]; //low[i]和low[j]交换后,i指针加1;
while(i<j&&A[i]<=pivot) //pivot 相当于在位置 j 上
i++; // 从左向右扫描,查找第 1 个关键字大于 pivot 的记录low[i]
if(i<j) // 如果找到一个大于pivot的数;
A[j--]=A[i]; // 相当于交换 low[i] 和 low[j] ,交换后 j 指针减 1
}
A[i]=pivot; // 基准记录已被最后定位
return i ;
}
public class MainClass {
public static void Main() {
int[] A = new int[]{9,8,7,3,35,5,3,21,1,57,2,123,4,0}; sort S = new sort();
S.QuickSort(A ,0,13);
for(int m=0; m<14;m++)
Console.Write(A[m]+ " ");
}
} }
}