前言:闲来无事,便研究起来对数组的排序算法,怕过后遗忘,特地总结一下,也希望能帮到大家

概要: 

总结的算法:

冒泡排序、插入排序、选择排序

要排序的一列数(从小到大):

1, 5, 3, 83, 46, 55, 16, 87, 28, 66, 8, 33, 47

一、冒泡排序

1.源代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace BubbleSort
{
class Program
{
static void Main(string[] args)
{
//定义要排序的数组
int[] iArrary = new int[] { , , , , , , , , , , , , }; Program pg = new Program(); //给数组排序
pg.Sort(iArrary); //排序后循环输出数组
foreach (int item in iArrary)
{
Console.WriteLine(item); }
//防止控制台一闪而过
Console.ReadLine(); } public void Sort(IList<int> data)
{
//从第一个数(i = 0)开始,循环整个数组。
for (int i = ; i < data.Count; i++)
{
//从最后一个数开始,到第(i+1)个数结束,依次比较相邻的两个数,
//如果前一个数大于后一个数,就交换他们两个
//这样,第一个循环下来,第一个数是最小的数
//第二个循环下来,第二个数是第二小的数。。。依次类推
for (int j = data.Count-; j > i; j--)
{
if (data[j - ] > data[j])
{
int temp;
temp = data[j - ];
data[j - ] = data[j];
data[j] = temp; } }
}
}
}
}

2 .运行结果

二、插入排序

1.算法简介

插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。

2.算法描述

一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:

  • <1>.从第一个元素开始,该元素可以认为已经被排序;
  • <2>.取出下一个元素,在已经排序的元素序列中从后向前扫描;
  • <3>.如果该元素(已排序)大于新元素,将该元素移到下一位置;
  • <4>.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
  • <5>.将新元素插入到该位置后;
  • <6>.重复步骤2~5。

3.源代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
int[] iArrary = new int[] { , , , , , , , , , , , , , }; Program pg = new Program(); pg.InsrtSort(iArrary); foreach (int item in iArrary)
{
Console.WriteLine(item); }
Console.ReadLine(); } //插入排序
public void InsrtSort(IList<int> data)
{
// int[] iArrary = new int[] { 1, 5, 3, 6, 10, 55, 9, 2, 87, 12, 34, 75, 33, 47 };
int temp; for (int i = ; i < data.Count; i++)
{
temp = data[i];//要与已排序数组比较的新元素 //从0到j,代表的是已排序的数
for (int j = i - ; j >= ; j--)
{ if (data[j] > temp)//新元素小于该元素(已排序),将该元素移到下一位置
{
data[j + ] = data[j];
//data[j] = temp;
if (j == )//因为取不到 j==0 的值,故在此做特殊处理
{
data[] = temp;//只有当第二个数小于第一个数的时候,才会执行该处代码
}
}
else//否则,将新元素移到下一位置
{
data[j + ] = temp;
break;//跳出里面的循环 } }
} } }
}

4.运行结果

三. 选择排序

1.思路

首先,在未排序序列中,找到最小元素,存放到排序序列的起始位置。

然后,再从剩余未排序元素中,继续寻找最小元素,然后放到已排序序列的末尾。

以此类推,直到所有元素排序完毕。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace SelectionSort
{
class Program
{
static void Main(string[] args)
{ int[] iArrary = new int[] { , , , , , , , , , , , , }; Program pg = new Program(); pg.Sort(iArrary); foreach (int item in iArrary)
{
Console.WriteLine(item); }
Console.ReadLine(); }
public void Sort(IList<int> data)
{
// int[] iArrary = new int[] { 1, 5, 3, 6, 10, 55, 9, 2, 87, 12, 34, 75, 33, 47 };
for (int i = ; i < data.Count - ; i++)
{
//在未排序序列中,总是默认为第一个值,为最小值;min 与temp都是过来跑龙套的
int min = i;//最小值的序号
int temp = data[i];//最小值 //找到剩余未排序元素的最小值
for (int j = i+; j < data.Count; j++)
{
if (data[j] < temp)//剩余未排序元素中,存在某元素数小于最小值
{
min = j;
temp = data[j];//将该元素的值认为是最小值
} } if (min != i)//
{
int t = data[min];
data[min] = data[i];
data[i] = t;//将找到的最小值放入已排序序列的末尾 } } } }
}

3.运行结果

c#(控制台应用程序)实现排序算法的研究总结的更多相关文章

  1. JAVA 基础编程练习题28 【程序 28 排序算法】

    28 [程序 28 排序算法] 题目:对 10 个数进行排序 程序分析:可以利用选择法,即从后 9 个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即 用第二个元素与后 8 个进行比较,并进 ...

  2. Java50道经典习题-程序28 排序算法

    题目:对10个数进行排序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换. public class Prog28 { ...

  3. Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...

  4. java小程序整理及排序算法

    1. 利用循环打印如下图形 ***** **** *** ** * public class Main { public static void main(String[] args) { // TO ...

  5. Java 常用排序算法/程序员必须掌握的 8大排序算法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...

  6. 算法课上机实验(一个简单的GUI排序算法比较程序)

    (在家里的电脑上Linux Deepin截的图,屏幕大一点的话,deepin用着还挺不错的说) 这个应该是大二的算法课程上机实验时做的一个小程序,也是我的第一个GUI小程序,实现什么的都记不清了,只记 ...

  7. 各种排序算法及其java程序实现

    各种排序算法:冒择路(入)兮(稀)快归堆,桶式排序,基数排序 冒泡排序,选择排序,插入排序,稀尔排序,快速排序,归并排序,堆排序,桶式排序,基数排序 一.冒泡排序(BubbleSort)1. 基本思想 ...

  8. 排序算法--希尔排序(Shell Sort)_C#程序实现

    排序算法--希尔排序(Shell Sort)_C#程序实现 排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题.例如,字典中的单词是以字母的顺序排列,否则,使用起来非常困难 ...

  9. 排序算法--插入排序(Insertion Sort)_C#程序实现

    排序算法--插入排序(Insertion Sort)_C#程序实现 排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题.例如,字典中的单词是以字母的顺序排列,否则,使用起来 ...

随机推荐

  1. java web response提供文件下载功能

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  2. 豹哥嵌入式讲堂:ARM知识概要杂辑(2)- 第一款Cortex-M处理器

    1.天生荣耀:ARM Cortex-M处理器由来 ARM公司自2004年推出ARMv7内核架构时,摒弃了以往"ARM+数字"这种处理器命名方法(ARM11之前的处理器统称经典处理器 ...

  3. git 对 Microsoft Word 进行版本控制

    昨天中国高校发生了一件骇人听闻的事情,听说不少高校的校园网用户连接校园网被勒索病毒给黑了,重要文件全部被加密,必须要支付赎金才能解密,具体新闻可以参见:http://www.sohu.com/a/14 ...

  4. Cisco配置aaa验证

    当您的网络中部署了一台集中的radius校验服务器(比如我司的SAM,cisco的ACS等),希望对登陆设备的用户身份进行合法性校验,而账号都统一由该radius服务器集中产生与维护,您希望所有的登入 ...

  5. java 如何将 word,excel,ppt如何转pdf--jacob

    问题:java 如果将 word,excel,ppt如何转pdf 我个人的观点:windows server下用 jacob; linux server下 用openoffice.   PS:1.本文 ...

  6. 编译和解释性语言和python运行方式

    1.编译型语言和解释性语言 编译型语言:在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了.程序执行效率高,依赖编译器,跨平台性差些.如C. ...

  7. JAVA并发编程学习笔记------锁顺序死锁

    一.需求描述: 将资金从一个账户转移到另一个账户. 二.程序实现: (1)账户类: public class Account { private long account; public Accoun ...

  8. HDU [P1533]

    二分图带权最小匹配(朴素) 只要换几个不等号的方向就行,不需要变换权值的正负 #include <iostream> #include <cstdio> #include &l ...

  9. POJ [P3660] Cow Contest

    传递闭包经典应用 奶牛的名次能确定当且仅当在它前面的牛数+在他后面的牛数==n-1 在他前面和后面的牛数可以转化成求完传递闭包后的出度和入度 #include <iostream> #in ...

  10. 洛谷 [P1282] 多米诺骨牌

    这道题是一道背包问题,考虑一个背包, 显然如果我们直接设dp[i]表示前i个使差值最小所需的最少翻转次数,是具有后效性的. 所以我们将直接求最值,改为求某个值是否可行,这种求最值转变为求可行性的思想是 ...