`

c#之冒泡法与快速法排序

 
阅读更多

设计页面labe1 ,label2 ,label5分别显示随机数,冒泡法从大到小排序与快速法从小到大排序
label3,label4分别显示排序指数 ,一个按钮控件开始排序
------------------------------------------------------------------------------------------
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
//**********************快速法排序函数定义**********************************************************
int k2 = 0;//记录快速法排序次数
private void Swap(ref int i, ref int j)
//swap two integer
{
k2++;
int t;
t = i;
i = j;
j = t;
}
//-----------------------数很少时的情况1-----------------------

public void Sort(int[] index2, int low, int high)
{
if (high <= low)
{
//only one element in array index2
//so it do not need sort
return;
}
else if (high == low + 1)
{
//means two elements in array index2
//so we just compare them
if (index2[low] > index2[high])
{
//exchange them
Swap(ref index2[low], ref index2[high]);
return;
}
}
//more than 3 elements in the arrary index2
//begin QuickSort
myQuickSort(index2, low, high);
}

//----------------------------------------------------------
private int Partition(int[] index2, int low, int high)
{
//get the pivot of the arrary index2
int pivot;
pivot = index2[low];
while (low < high)
{
while (low < high && index2[high] >= pivot)
{
high--;
}
if (low != high)
{
Swap(ref index2[low], ref index2[high]);
low++;
}
while (low < high && index2[low] <= pivot)
{
low++;
}
if (low != high)
{
Swap(ref index2[low], ref index2[high]);
high--;
}
}
return low;
}

//-----------------------------------------------------------
public void myQuickSort(int[] index2, int low, int high)
{
if (low < high)
{
int pivot = Partition(index2, low, high);
myQuickSort(index2, low, pivot - 1);
myQuickSort(index2, pivot + 1, high);
}
//快速排序法输出新数组**************想输出排序过程

//for (int n = 0; n < index2.Length; n++)
// Label5.Text = Label5.Text + index2[n].ToString() + " ";
//Label5.Text = Label5.Text + "下一轮:" + "<br>";
//Label4.Text = k2.ToString();
}
//**************************按钮点击事件*********************************************
protected void Button1_Click(object sender, EventArgs e)
{
int m = 0, i = 0;
int[] index = new int[50];//建立一个数组用于存放已经选出的值
int[] index2 = new int[50];
index[0] = 1;
while (m < index.Length)
{
loop1:
Random k = new Random(unchecked((int)DateTime.Now.Ticks));
int number = Convert.ToInt32(k.Next(0, 100));
//0到100之间的整型随机数
//Response.Write("number = " + number + "\n");
for (i = 0; i < m + 1; i++) //判断重复
{
if (number != index[i]) continue;
else if (i != m) goto loop1;
else break;
}
index[m] = number;
//Response.Write("m = "+m+" "+"产生的数是:" + index[m] +"<br>");
Label1.Text = Label1.Text + number.ToString() + " ";
m++;
}
//-----------------------------------------------------------------------
for (i = 0; i < index.Length; i++)
{
index2[i] = index[i];
}

//**************冒泡法排序*****从大到小*********************************************

int k1 = 0; //记录排序次数
for (int n = 0; n < index.Length; n++)
{
for (int j = n; j < index.Length; j++)
{
if (index[n] < index[j])
{
int temp = index[n];
index[n] = index[j];
index[j] = temp;
k1++;
}
}
}
//输出排序后的数组
for (int n = 0; n < index.Length; n++)
Label2.Text = Label2.Text + index[n].ToString() + " ";
Label3.Text = k1.ToString();

//*******************快速法排序*****************************************************
int low = 0, high = index2.Length-1;
Sort(index2, low, high);//函数调用
//快速排序法输出新数组
//??????????????????????????????????????????????????????并不想输出排序过程
for (int n = 0; n < index2.Length; n++)
Label5.Text = Label5.Text + index2[n].ToString() + " ";
Label5.Text = Label5.Text + "下一轮:" + "<br>";
Label4.Text = k2.ToString();
}

分享到:
评论

相关推荐

    冒泡排序法C#实现

    冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序...

    C#冒泡排序法

    在C#环境下使用冒泡排序法对一位数组进行排序

    C# 冒泡排序法对输入的数字进行排序

    本程序用C#语言冒泡排序法对输入的数组进行排序

    c#选择排序法 冒泡排序法 插入排序法 3种排序法

    本篇文章将详细介绍在C#语言中实现的选择排序法、冒泡排序法以及插入排序法,并通过具体的代码示例来展示每种排序方法的工作原理。 #### 一、冒泡排序(Bubble Sort) **定义与原理:** 冒泡排序是一种简单的排序...

    c#冒泡法排序

    c#冒泡法排序法编程视频,黑马程序员,Bubble Sort 气泡排序

    C# 冒泡排序法

    使用C#编写 使用冒泡排序法对一维数组进行排序

    c#实现经典冒泡排序法下载

    在IT领域,特别是编程技术中,排序算法是基础且重要的数据结构操作之一,它用于将一组数据按照特定的顺序进行排列。在众多排序算法中,冒泡排序(Bubble Sort)因其简单直观而广为人知,尽管它不是最高效的排序算法...

    c#产生随机数并冒泡排序

    本文介绍了C#中生成随机数的方法、数组的基本操作以及冒泡排序算法的具体实现。通过这个示例程序,读者可以了解到如何在实际编程中应用这些概念。值得注意的是,虽然冒泡排序易于理解和实现,但在大数据量的情况下...

    c#的算法 选择排序 冒泡排序 快速排序 插入排序 。。。

    根据给定的信息,本文将详细解释C#中的几种基本排序算法:选择排序、冒泡排序、快速排序、插入排序、希尔排序以及归并排序的基本原理和实现方式。 ### 一、选择排序(Selection Sort) #### 算法原理 选择排序是一...

    冒泡排序 c#

    标题与描述中的知识点是关于C#语言中冒泡排序算法的实现与应用。冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复进行的,...

    C#最基本的排序方法(冒泡排序、快速排序).zip

    本资源主要探讨了两种基本的排序方法:冒泡排序和快速排序。 首先,我们来详细了解一下冒泡排序。冒泡排序是一种简单直观的排序算法,它的名字来源于排序过程中较小的元素像气泡一样逐渐“浮”到数组的顶端。其工作...

    C#选择排序法排序

    在提供的项目中,你将能够找到一个具体的C#控制台应用程序,该程序演示了如何使用选择排序法对整数序列进行排序,并提供了用户友好的交互界面。这将是一个很好的实践平台,帮助你深入理解和运用选择排序法。

    适合初学C#很简单的冒泡法

    以下是一个简单的C#冒泡排序算法的实现: ```csharp public static void BubbleSort(int[] array) { int n = array.Length; for (int i = 0; i ; i++) { for (int j = 0; j ; j++) { // 如果当前元素大于下一...

    c#中的冒泡排序发法代码经过测试无问题

    在探讨C#中的冒泡排序算法之前,我们首先需要理解冒泡排序的基本概念与工作原理。冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作...

    冒泡法(c#.net源码).rar

    本项目提供的是C#.NET实现的冒泡排序算法源代码。 在C#.NET中,我们可以利用面向对象的特性来编写冒泡排序的类和方法。首先,创建一个名为`BubbleSort`的类,它可能包含一个公共静态方法`BubbleSort`用于执行冒泡...

    c#项目中冒泡法排序

    在C#中,我们可以创建一个方法,接受一个整型数组作为参数,然后在方法内实现冒泡排序的过程。以下是一个基本的示例: ```csharp public static void BubbleSort(int[] arr) { int n = arr.Length; for (int i =...

    C#冒泡算法+经典算法

    在压缩包中,"冒泡排序"可能是包含了实现冒泡排序的C#代码文件,而"经典算法"可能包含了一些常见的经典算法的C#实现,如快速排序、归并排序等。通过研究这些代码,你可以学习到如何在C#中有效地编写和应用这些算法,...

    用c#语言编写的快速排序,冒泡排序,插入排序,选择排序,递归算法

    以上就是关于C#中快速排序、冒泡排序、插入排序、选择排序以及递归算法的基本概念和实现方法。了解和熟练掌握这些排序算法,对于提升C#编程能力,尤其是处理大数据时的性能优化,有着至关重要的作用。

    任意从键盘输入10个数,用冒泡法进行排序

    在描述中提到的"使用的是C#冒泡法!"进一步强调了冒泡排序在C#环境中的实现。这个程序将结合C#的输入、数组处理、循环和条件判断等基本语法,构建出一个完整的冒泡排序应用。 根据提供的文件名称"paixu",很可能...

    冒泡法排序演示

    冒泡法排序演示,演示冒泡法排序的整个过程,便于理解冒泡法排序。

Global site tag (gtag.js) - Google Analytics