用委托定义的冒泡排序法

1.排序的类

public class BubbleSorter {

static public void Sort<T>(IList<T> sortArray, Func<T, T, bool> comparison) {
bool swapped = true;
do {
swapped = false;
for (int i = 0; i < sortArray.Count - 1; i++) {
if (comparison(sortArray[i + 1], sortArray[i])) {
T tmp = sortArray[i];
sortArray[i] = sortArray[i + 1];
sortArray[i + 1] = tmp;
swapped = true;
}
}
} while (swapped);
}
}

2.定义一个数据比较的方法

public static bool CompareValue(int x, int y)
{
return x < y;
}

3.调用方法排序

IList<int> arraySort = new int[] { 7, 4, 3, 5, 2, 7, 9, 4, 5 };
BubbleSorter.Sort(arraySort, CompareValue);
for (int i = 0; i < arraySort.Count; i++) {
Console.WriteLine("{0}", arraySort[i]);
}
Console.ReadLine();

时间: 2024-10-10 18:13:08

用委托定义的冒泡排序法的相关文章

C#冒泡排序法及优化

冒泡排序法及优化: static void Main(string[] args) { int[] sums = { 20, 2, 1, 26, 27, 28 }; int compareCount = 0; //冒泡排序法 for (int i = 0; i < sums.Length - 1; i++) //总共要比较的趟数 { for (int j = 0; j < sums.Length - 1 - i; j++) //每趟中要比较的次数 { if (sums[j] > sums

一、冒泡排序法对随机生成的十个数按升序进行排序

//运用冒泡排序法对随机生成的十个数按升序进行排序 //首先分析我们用冒泡排序法对这十个数排序,即用第一个数跟第二个数比较,然后将大的放到后面,接着跟第三个比较...... //我们定义一个数组名arrInt[],长度为10,定义一个变量i来记录是第几个数 int i = 0; int j = 1; int t = 0;//定义一个空位置交换时使用 int[] arrInt=new int[10];//定义一个长度为10的数组 Random rd=new Random(); Console.Wr

数据结构:链表 &gt;&gt; 链表按结点中第j个数据属性排序(冒泡排序法)

创建结点类,链表类,测试类 1 import java.lang.Object; 2 //结点node=数据date+指针pointer 3 public class Node { 4 Object iprop; 5 public Object getIprop(int i){ 6 switch(i){ 7 case 1:iprop=num;break; 8 case 2:iprop=name;break; 9 case 3:iprop=score;break; 10 } 11 return i

C语言 数组输出,冒泡排序法,沉底排序法,二维数组输出,输出字母列长度,从随机数组中找重复数

#include <stdio.h> #define sum 3+4//宏定义是原封不动的使用used for test4 #include <time.h>//used for test8~9 #include <stdlib.h>//used for test8~9 void test(){//数组输出 //int a[5]={1,2,3,4,5}; printf("array output,look,please...\n"); int a[1

算法大神之路----排序(冒泡排序法)

冒泡排序法 冒泡排序法又称为交换排序法,是由观察水中冒泡变化构思而成,气泡随着水深压力而改变.气泡在水底时,水压最大,气泡最小,而气泡慢慢浮上水面时,气泡所受压力最小,体积慢慢变大. 冒泡排序比较方式是从第一个元素开始,比较相邻的元素大小,如果大小顺序有误,则对调后进行下一个元素比较.直到所有元素满足关系为止. 冒泡排序法分析 冒泡排序法平均情况下,需要比较(n-1)/2次,时间复杂度为O(n2),最好的情况只需要扫描一次,不用操作,即作n-1次比较,时间复杂度为O(n). 由于冒泡排序为相邻两

PHP 冒泡排序法

1 <?php 2 // 冒泡排序法:将一个数组中的值按照从小到大的顺 序排序 3 $arr = array(1, 4, 5, 2, 3, 7, 9, 8); 4 $len = count($arr); 5 $len2= $len - 1; 6 for ($i = 0; $i < $len; $i++) 7 { 8 for ($j = 0; $j < $len2; $j++) 9 { 10 if ($arr[$j] > $arr[$j + 1]) // 比较当前的与下一个的大小 1

关于Java中的选择排序法和冒泡排序法

一,这种方法是直接传入一个数组进行排序(选择排序法) public static void selectSort(int arr[]){ for (int i = 0; i < arr.length-1; i++) { for (int j = i+1; j < arr.length; j++) { if(arr[j]<arr[i]){ int temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } } 二,这种事传入一个数组和一个数组个数(选择排序

PHP冒泡排序法

冒泡排序法是一种很基础的排序方法,也是面试题中经常问到的一道题目.今天做了一下简单的分析,具体代码和思路如下 1 <?php 2 3 /*思路: 4 *按照元素顺序循环比较, 5 * 当前元素为$array[$i],取后面的元素与 6 * $array[$i]比较,所以应该从第$j($j=$i+1)个元素开始比较; 7 * 8 *比较$array[$i]和$array[$j]的大小,将较大的元素放到前面,所以要使用中间变量$tmp 9 *过渡 10 * 11 *因为$i次循环后,只能保证$arr

C#冒泡排序法学习

一,冒泡排序法理解:就是将一个集合里的数据当前位置和后一位比较,然当前位置大于后一位,则两个位置替换,直到排序完成 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MaoPao { class Program { static void Sort(int[] sArray) { bool sw = true; do { sw = false; for (