求c# 快速排序(quick sort)源代码!

unling 2009-03-24 12:44:17
求c# 快速排序(quick sort)源代码源代码!
假设待排序的是一维整形数组 int[] arry = new int[17] { 1, 4, 6, 23, 2, 56, 7, 2, 46, 78, 89, 123, 34, 4, 6, 68, 9 };

...全文
1530 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
loooooog 2012-05-06
  • 打赏
  • 举报
回复
我也想要
unling 2009-03-25
  • 打赏
  • 举报
回复
好像是用递归什么实现的 面试题
zzxap 2009-03-25
  • 打赏
  • 举报
回复
arry.sort
unling 2009-03-25
  • 打赏
  • 举报
回复
求c# 快速排序(quick sort)源代码源代码!
假设待排序的是一维整形数组 int[] arry = new int[17] { 1, 4, 6, 23, 2, 56, 7, 2, 46, 78, 89, 123, 34, 4, 6, 68, 9 };

up!
unling 2009-03-25
  • 打赏
  • 举报
回复
冒泡排序我是会的 我问的是快速排序法 我自己研究出来了 贴出来 供大家研究
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 冒泡排序与快速排序
{
class Program
{
/// <summary>
/// 冒泡排序法
/// </summary>
private void MaoPao()
{
int temp;
int[] arry = new int[17] { 1, 4, 6, 23, 2, 56, 7, 2, 46, 78, 89, 123, 34, 4, 6, 68, 9 };
Console.WriteLine(arry.Length);
for (int j = 1; j < arry.Length - 2; j++)
{
for (int i = 0; i < arry.Length - j; i++)
{
if (arry[i] > arry[i + 1])
{

temp = arry[i];
arry[i] = arry[i + 1];
arry[i + 1] = temp;

}

}
}
foreach (var item in arry)
{
Console.Write(item + " ");
}

}

/// <summary>
/// 快速排序法
/// </summary>
/// <param name="data"></param>
/// <param name="start"></param>
/// <param name="end"></param>
public static void Sort(ref int[] data, int start, int end)
{
if (start >= end) return;
if (start + 1 == end)
{
if (data[start] > data[end])
Swap(ref data, start, end);

return;
}

int indexL = start + 1, indexR = end;
while (indexL < indexR)
{
// Get from left
while (indexL <= end && data[start] >= data[indexL])
indexL++;

// Get from right
while (indexR > start && data[start] < data[indexR])
indexR--;

if (indexL < indexR)
{
Swap(ref data, indexR, indexL);
}
}

if (indexL - 1 != start)
Swap(ref data, start, indexL - 1);


Sort(ref data, start, indexL - 2);
Sort(ref data, indexL, end);
}

/// <summary>
/// 交换
/// </summary>
/// <param name="data"></param>
/// <param name="x"></param>
/// <param name="y"></param>
private static void Swap(ref int[] data, int x, int y)
{
var temp = data[x];
data[x] = data[y];
data[y] = temp;
}


private static void QuikSort()
{
int[] arry = new int[8]{5,6,4,2,7,3,1,8};

Sort(ref arry, 0,7);

foreach (var item in arry)
{
Console.Write(item + " ");
}
}

static void Main(string[] args)
{
//MaoPao() //冒泡排序法
QuikSort(); //快速排序法

}
}
}
PandaIT 2009-03-25
  • 打赏
  • 举报
回复
//简单的一个排序方法
int[] arry = new int[17] { 1, 4, 6, 23, 2, 56, 7, 2, 46, 78, 89, 123, 34, 4, 6, 68, 9 };

for (int i = 0; i <arry.Length; i++)
{
Array.Sort(arry);
Console.WriteLine(arry[i]);

}
//冒泡排序
for (int i = 0; i < arry.Length-1; i++)
{
for (int j = 0; j < arry.Length-1-i; j++)
{
if (arry[j]>arry[j+1])//如果要降序,换成小于号就成
{
//交换元素
int temp = arry[i];
arry[j] = arry[j + 1];
arry[j + 1] = temp;
}
}
}
for (int i = 0; i <arry.Length; i++)
{
Console.WriteLine(arry[i]);

}
秦彬 2009-03-25
  • 打赏
  • 举报
回复
可以用冒泡
直接插入排序
希尔排序
快速排序
选择排序

....

//交换排序 (冒泡排序)
public class BubbleSort
{
public void Sort(int m[])
{
int flag=1;
int temp=0;
for(int i=1;i<m.length&&flag==1;i++)
{
System.out.println("i="+i);
flag=0;
for(int j=0;j<m.length-i;j++)
{
if(m[j]>m[j+1])
{
flag=1;
temp=m[j+1];
m[j+1]=m[j];
m[j]=temp;
}
}
}
}
public static void main(String args[])
{
int [] m={2,6,1,32,53,22};
BubbleSort bs=new BubbleSort();
bs.Sort(m);
for(int i=0;i<m.length;i++)
{
System.out.println(m[i]);
}
}
}
yixianggao 2009-03-24
  • 打赏
  • 举报
回复
http://referencesource.microsoft.com/Default.aspx
自己看去吧

快排算法很多,自己用 C# 实现很容易!

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧