冒泡排序

// 冒泡排序 bubble sort
public static int[] BubbleSort(int []array)
{
bool isContinue = true;
for (int i = ; i < array.Length && isContinue; i++)
{
isContinue = false;
for (int j = ; j < array.Length - i - ; j++)
{
if (array[j] > array[j + ])
{
int temp = array[j];
array[j] = array[j + ];
array[j + ] = temp;
isContinue = true;
}
}
}
return array;
}
双向冒泡

// 双向冒泡 Double sided bubble sort
public static int[] TowWayBubbleSort(int[] array)
{
bool isContinue = true;
for (int i = ; i < array.Length && isContinue; i++)
{
isContinue = false;
for (int j = ; j < array.Length - i - ; j++)
{
if (array[j] > array[j + ])
{
int temp = array[j];
array[j] = array[j + ];
array[j + ] = temp;
isContinue = true;
}
if (array[array.Length - j - ] < array[array.Length - j - ])
{
int temp = array[array.Length - j - ];
array[array.Length - j - ] = array[array.Length - j - ];
array[array.Length - j - ] = temp;
isContinue = true;
}
}
}
return array;
}
插入排序

// 插入排序 Insertion sort
public static int[] InsertionSort(int[] array)
{
for (int i = ; i < array.Length; i++)
{
int current = array[i];
int j = i;
while (j > && current < array[j - ])
{
array[j] = array[j - ];
j--;
}
array[j] = current;
} return array;
}
折半插入

// 折半插入排序 Half insertion sort
public static int[] HalfInsertionSort(int[] array)
{
for (int i = ; i < array.Length; i++)
{
int current = array[i];
int low = ;
int high = i - ;
int mid;
while (low <= high)
{
mid = (low + high) / ;
if (array[mid] < current)
{
low = mid + ;
}
else
{
high = mid - ;
}
}
for (int j = i; j > low; j--)
{
array[j] = array[j - ];
}
array[low] = current;
}
return array;
}
选择排序

// 选择排序 Selection sort
public static int[] SelectionSort(int[] array)
{
for (int i = ; i < array.Length; i++)
{
int min = i;
for (int j = i + ; j < array.Length; j++)
{
if (array[j] < array[min])
{
min = j;
}
}
int temp = array[i];
array[i] = array[min];
array[min] = temp;
} return array;
}
快速排序

// 快速排序 Quick sort
public static void QuickSort(int[] array, int low, int high)
{
if (low < high)
{
int midValue = array[low];
int left = low;
int right = high;
while (left < right)
{
while (left < right && array[right] >= midValue)
{
right--;
}
if (left < right)
{
array[left++] = array[right];
}
while (left < right && array[left] < midValue)
{
left++;
}
if (left < right)
{
array[right--] = array[left];
}
}
array[left] = midValue;
QuickSort(array, low, left - );
QuickSort(array, left + , high);
}
}
找第二大的数

public static int GetSecondNum(int[] array)
{
int first = ;
int second = -;
for (int i = ; i < array.Length; i++)
{
if (array[first] < array[i])
{
second = first;
first = i;
}
else if (second == - || (array[i] < array[first] && array[second] < array[i]))
{
second = i;
}
} return array[second];
}
反转句子单词不反转

public static string WordReverse(string str)
{
char[] array = str.ToArray();
CharArrayReverse(array, , array.Length - );
int start = -;
int end = -;
for (int i = ; i < array.Length; i++)
{
if (!((array[i] >= 'a' && array[i] <= 'z') || (array[i] >= 'A' && array[i] <= 'Z')))
{
if (start < end)
{
CharArrayReverse(array, start + , end);
}
start = i;
}
else
{
end = i;
}
}
return new string(array);
} public static void CharArrayReverse(char[] array, int start, int end)
{
if (array != null && start < array.Length && end < array.Length)
while (start < end)
{
char temp = array[start];
array[start] = array[end];
array[end] = temp;
start++;
end--;
}
}

c# 各种排序算法+找第二大的数+句子单词反转的更多相关文章

  1. 找第二大的数SQL-Second Highest Salary

    1: 找小于最大的最大的 select max(Salary) from Employee where Salary<(select MAX(Salary) from Employee); 2. ...

  2. 排序算法总结第二弹----冒泡排序---javascript描述

    上篇博文总结了选择排序,这篇来看冒泡排序,接上篇. 冒泡排序思想:若是正再将一组数据升序排序, 第一趟:比较相邻的数据,当左侧值大于右侧值将他们进行交换,将较小值向前浮动,大值向后冒泡,直至比较到最后 ...

  3. python找出数组中第二大的数

    #!usr/bin/env python #encoding:utf-8 ''''' __Author__:沂水寒城 功能:找出数组中第2大的数字 ''' def find_Second_large_ ...

  4. 算法笔记_159:算法提高 第二大整数(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 编写一个程序,读入一组整数(不超过20个),当用户输入0时,表示输入结束.然后程序将从这组整数中,把第二大的那个整数找出来,并把它打印出来 ...

  5. 如何使用一次for循环得到数组中第二大的数和第三大的数

    装载声明:http://blog.csdn.net/lxsmk9059/article/details/77920206?locationNum=1&fps=1 ,,,,,,,,}; ]; ] ...

  6. sql求倒数第二大的数,效率不高,但写法新颖

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  7. 【算法】第二类斯特林数Stirling

    第二类Stirling数实际上是集合的一个拆分,表示将n个不同的元素拆分成m个集合的方案数,记为 或者 . 第二类Stirling数的推导和第一类Stirling数类似,可以从定义出发考虑第n+1个元 ...

  8. Microsoft的考验――查找第二大的数

    #include<stdio.h> int main() { int n,m,t,max,max1; scanf("%d",&n); while(n--) { ...

  9. Python 基础排序算法

    冒泡排序(bubble sort) 思路 以升序为例: 从第一个数开始向后两两对比,将大的数一直向后移动,直至最大的数移到最后,再找第二大的数 最好情况:O(n) 一般情况:O(n^2) 最坏情况:O ...

随机推荐

  1. centos atomic host第一次启动

    centos atomic host安装完成会,第一次启动时会调用cloud-init等服务.这是个什么东东? cloud-init用于在创建虚拟机时通过元数据服务对虚拟机基本配置,包括常见的主机名, ...

  2. Loadrunner:安装LR11时提示缺少vc2005_sp1_with_atl_fix_redist

    [问题现象] 安装LR11时提示缺少vc2005_sp1_with_atl_fix_redist: [解决办法] 手动安装缺少的组件,LR安装包中已自带该组件,为何不自动捕捉异常去获取该自带的组件去安 ...

  3. C#正则表达式语法规则详解

    正则表达式通常包含字母文本(Literaltext)和元字符(metacharacter) 字母文本指的是普通文本如"abcde"可匹配字符串中任何包含"abcde&qu ...

  4. 实例分析ELF文件动态链接

    参考文献: <ELF V1.2> <程序员的自我修养---链接.装载与库>第6章 可执行文件的装载与进程 第7章 动态链接 <Linux GOT与PLT> 开发平台 ...

  5. 【Winform】DataTable绑定到ComboBox

    我们从数据库中查询出来的数据存放在Datatable中 1.DataTable绑定到ComboBox上 cmbRole.DataSource = datatable; cmbRole.DisplayM ...

  6. require.js js模块化方案

    一.为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载.下面的网页代 ...

  7. 三、MongoDB的创建、更新和删除

    一.MongoDB的下载.安装与部署 二.MongoDB的基础知识简介 三.MongoDB的创建.更新和删除 概要 下面开始学习MongoDB最重要也是最基础的部分:C(创建)R(查询)U(更新)D( ...

  8. source insight用于C语言编程的工具脚本

    简单来说,source insight提供的功能功能还不够傻瓜,用起来还不够方便,所以写了此脚本,提高开发效率. 部分source insight提供的功能也包含了进来,主要是因为我不喜欢使用太多的快 ...

  9. win7防火墙打不开(无法启动windows firewall服务)

    点击windows 7控制面板中防火墙的“推荐配置”没有反应:打开“服务”,无法启动windows firewall,并报错.  可能很多的win7用户都碰到过这样的一种情况,那就是win7的防火墙打 ...

  10. php不使用插件导出excel

    php不使用插件导出excel的简单方法,首先获取需要导出的数据的数组,数组的格式在下面. 之后就是定义文件名称和需要导出的excel的样式,最后就是循环数组,输出数据了 代码: $filename= ...