using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 快速排序法
{
class Program
{
static int process = 0;
static int size;
static int[] data = new int[100];
static void Main(string[] args)
{
Console.Write("请输入数组大小(100以下):");
size = int.Parse(Console.ReadLine());
Inputarr();
Console.Write("原始数据为");
Showdata();
Quick(data, size, 0, size - 1);
Console.Write("\n排序结果为:");
Showdata();
Console.ReadKey();
}
static void Inputarr()
{
//以随机数输入
Random rand = new Random();
int i;
for (i = 0; i < size; i++)
{
data[i] = (Math.Abs(rand.Next(99))) + 1;
}
}
static void Showdata()
{
int i;
for (i = 0; i < size; i++)
{
Console.Write(data[i] + " ");
}
Console.WriteLine();
}
static void Quick(int[] d, int size, int lf, int rg)
{
int i, j, tmp;
int lf_idx;
int rg_idx;
int t;
//1:第一项的键值为d[lf]
if (lf < rg)
{
lf_idx = lf + 1;
rg_idx = rg;
//排序
while (true)
{
Console.Write("[处理过程" + (process++) + "]=>");
for (t = 0; t < size; t++)
{
Console.Write("[" + d[t] + "]");
}
Console.Write("\n");
for (i = lf + 1; i <= rg; i++)
{
if (d[i] >= d[lf])
{
lf_idx = i;
break;
}
lf_idx++;
}
for (j = rg; j >= lf + 1; j--)
{
if (d[j] <= d[lf])
{
rg_idx = j;
break;
}
rg_idx--;
}
if (lf_idx < rg_idx)
{
tmp = d[lf_idx];
d[lf_idx] = d[rg_idx];
d[rg_idx] = tmp;
}
else
{
break;
}
}
if (lf_idx >= rg_idx)
{
tmp = d[lf];
d[lf] = d[rg_idx];
d[rg_idx] = tmp;
Quick(d, size, lf, rg_idx - 1);
Quick(d, size, rg_idx + 1, rg);
}
}
}
}
}
快速排序法C#
猜你喜欢
转载自blog.csdn.net/Somewater_/article/details/103539637
今日推荐
周排行