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 (int i = ; i < sArray.Length - ; i++)
{
if (sArray[i] > sArray[i + ])
{
int temp = sArray[i];
sArray[i] = sArray[i + ];
sArray[i + ] = temp;
sw = true;
}
}
} while (sw);
} static void Main(string[] args)
{
int[] sArray = new int[] { , , , , , , , };
Sort(sArray);
foreach (var temp in sArray)
{
Console.Write(temp + " ");
}
Console.ReadKey(); }
}
}
二,冒泡排序拓展
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace MaoPao
{
class Program
{
static void CommonSort<T>(T[] sArray, Func<T, T, bool> compareMethod)
{
bool sw = true;
do
{
sw = false;
for (int i = ; i < sArray.Length - ; i++)
{
if (compareMethod(sArray[i], sArray[i + ]))
{
T temp = sArray[i];
sArray[i] = sArray[i + ];
sArray[i + ] = temp;
sw = true;
}
}
} while (sw);
}
static void Main(string[] args)
{ Employee[] employees = new Employee[]
{
new Employee("张三",),
new Employee("李四",),
new Employee("陈五",),
new Employee("李六",),
new Employee("王七",)
};
CommonSort<Employee>(employees, Employee.Compare);
foreach (Employee em in employees)
{
Console.WriteLine(em);
}
Console.ReadKey();
}
}
}
类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace MaoPao
{
class Employee
{
public string Name { get; private set; }
public int Comp { get; private set; } public Employee(string name, int comp)
{
this.Name = name;
this.Comp = comp;
}
//如果e1大于e2的话,返回true,否则返回false
public static bool Compare(Employee e1, Employee e2)
{
if (e1.Comp > e2.Comp) return true;
return false;
} public override string ToString()
{
return Name + ":" + Comp;
}
}
}
三,泛型的冒泡排序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections; namespace Maopao
{
class Program
{
static void Main(string[] args)
{
People[] pl = new People[]{
new People(, "小明3"),
new People(, "小明1"),
new People(, "小明2"),
new People(, "小明5"),
new People(, "小明4"),
new People(, "小明9")
}; Sort s = new Sort();
int[] t = { , , , , , , };
int[] t1 = s.CompareTo(t);
People[] t3 = s.CompareSort<People>(pl);
for (int i = ; i < t1.Length; i++)
{
Console.WriteLine(t1[i].ToString());
} //用泛型实现冒泡程序
for (int i = ; i < t3.Length; i++)
{
Console.WriteLine(t3[i].Name);
}
Console.ReadKey();
}
}
public class Sort
{
public int[] CompareTo(int[] a)
{
int temp;
for (int i = ; i < a.Length - ; i++)
{
for (int j = i + ; j < a.Length; j++)
{
if (a[i] > a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
return a;
} public T[] CompareSort<T>(T[] t) where T : IComparable
{
T temp;
for (int i = ; i < t.Length - ; i++)
{
for (int j = i + ; j < t.Length; j++)
{
if (t[i].CompareTo(t[j]) > )
{
temp = t[i];
t[i] = t[j];
t[j] = temp;
}
}
}
return t;
}
}
public class People : IComparable
{
public People(int id, string name)
{
this.Id = id;
this.Name = name;
} public int Id
{
set;
get;
}
public string Name
{
get;
set;
}
public int CompareTo(object obj)
{
People p = (People)obj;
return this.Id.CompareTo(p.Id);
}
}
}
C#冒泡排序法学习的更多相关文章
- C++学习四 冒泡排序法的一些改进
冒泡排序法需要两次扫描,所以从时间复杂度来说,是O(n2). 如果用图形表示,是这样的: 但是我们可以加以改进. 首先是,如果在排序中间,整个向量已经达到了有序状态,可以直接跳出来. 这样它的复杂度由 ...
- python排序之二冒泡排序法
python排序之二冒泡排序法 如果你理解之前的插入排序法那冒泡排序法就很容易理解,冒泡排序是两个两个以向后位移的方式比较大小在互换的过程好了不多了先上代码吧如下: 首先还是一个无序列表lis,老规矩 ...
- C#数字图像处理算法学习笔记(三)--图像几何变换
C#数字图像处理算法学习笔记(三)--图像几何变换 几何图像处理包括 图像的平移变换,镜像变换,旋转变换,伸缩变换,在这里仅以水平镜像为例,通过代码来理解其基本操作方式: 翻转前:
- C语言 数组输出,冒泡排序法,沉底排序法,二维数组输出,输出字母列长度,从随机数组中找重复数
#include <stdio.h> #define sum 3+4//宏定义是原封不动的使用used for test4 #include <time.h>//used fo ...
- PHP 冒泡排序法
<?php // 冒泡排序法:将一个数组中的值按照从小到大的顺 序排序 $arr = array(33, 1, 4, 5, 2, 3, 7, 9, 8, 99); $len = count($a ...
- 关于Java中的选择排序法和冒泡排序法
一,这种方法是直接传入一个数组进行排序(选择排序法) public static void selectSort(int arr[]){ for (int i = 0; i < arr.leng ...
- java算法之冒泡排序法
由此可见:N个数字要排序完成,总共进行N-1趟排序,每第 i 趟的排序次数为 (N-i) 次,所以 可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数,即 for(inti=0;i& ...
- PHP冒泡排序法
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法.法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来. 冒泡排序它重复地走访过要排序的数列,一次比较两个元素,如果他 ...
- c/c++ 算法之快速排序法 冒泡排序法,选择排序法,插入排序法
本文详细叙述和实现了快速排序算法,冒泡排序 选择排序 插入排序比较简单,原理在这里不再详述,直接用代码进行了实现. 快速排序法(quicksort)是目前所公认最快的排序方法之一(视解题的对象而定), ...
随机推荐
- vue.js(6)--v-model
v-model实现数据的双向绑定(简易计算器实例) 简易计算器实例 <!DOCTYPE html> <html lang="en"> <head> ...
- 2018-8-10-win10-uwp-MetroLog-入门
title author date CreateTime categories win10 uwp MetroLog 入门 lindexi 2018-08-10 19:16:53 +0800 2018 ...
- rpmcache - 缓存 RPM 打包头部
SYNOPSIS rpmcache [ PACKAGE_NAME ... ] DESCRIPTION rpmcache 遍历文件树,可能通过 FTP 使用远程文件,使用 glob(7) 表达式过滤路径 ...
- 编译错误:warning C4005]ws2def.h(91): warning C4005: “AF_IPX”: 宏重定义 winsock.h(460) : 参见“AF_IPX”的前一个定义
[问题] ws2def.h(91): warning C4005: “AF_IPX”: 宏重定义: winsock2.h(460) : 参见“AF_IPX”的前一个定义 [原因] windows.h头 ...
- openstack组件之nova
Nova常用命令 1.查看vm列表 nova listnova list --all 2.查看镜像列表 nova image-list 3.查看卷列表 nova voluma-list 4.查 ...
- Python3.5-20190501-廖老师的
python是一门解释型\脚本语言(和js特别像,如果同时学习js和python完全搅浑了.) 在运行py时候是一句一句翻译成cpu识别的机器码,所以速度比较慢.而C程序是运行前直接编译成CPU能执行 ...
- bzoj5161 最长上升子序列 状压DP(DP 套 DP) + 打表
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5161 题解 回顾一下以前用二分求 LIS 的方法:令 \(f[i]\) 表示长度为 \(i\) ...
- pugixml的使用
VS项目,头文件处鼠标右键,添加“新建筛选器”,重命名为pugixml,把3个文件添加进来.在用到框架的文件中只需#include"pugixml\pugixml.hpp"即可. ...
- Debian取消从光盘安装软件的方式(please insert the disc labeled)
与Ubuntu不同,使用apt-get install packages时Debian可能会提示: Media change: please insert the disc labeled 'Debi ...
- vue cli3以上的项目中如何使用axois请求本地json文件
首先明确一点,在vue cli3以上的版本中,存放静态资源的文件是public 我刚开始以为是和vue cli2一样需要放在static文件夹下,但是项目中没有这个文件夹,我就自己创建了一个,结果请求 ...