冒泡排序

// 冒泡排序 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. (笔记)angular 包含关系的controller参数传递

  2. hbase查询,scan详解

    一.shell 查询 hbase 查询相当简单,提供了get和scan两种方式,也不存在多表联合查询的问题.复杂查询需通过hive创建相应外部表,用sql语句自动生成mapreduce进行.但是这种简 ...

  3. 如何避免遭受HTTS中间人攻击

    先前为大家说明了如何对App的HTTPS通讯进行中间人攻击,听起来很吓人吧-表示若是使用手机的网银或购物等App,便有可能暴露在风险之中. 会发生HTTPS遭受拦截的主要原因是客户端的App未对服务器 ...

  4. 你真的理解z-index吗?

    一.前言 假如只是开发简单的弹窗效果,懂得通过z-index来调整元素间的层叠关系就够了.但要将多个弹窗间层叠关系给处理好,那么充分理解z-index背后的原理及兼容性问题就是必要的知识储备了.本文作 ...

  5. thinkphp验证码点击更换js实现

    <img src="__CONTROLLER__/verify" alt="" onclick=this.src="__CONTROLLER__ ...

  6. jQuery下拉友情链接美化效果代码分享

    这篇文章主要介绍了jQuery下拉友情链接美化效果,很实用的代码,推荐给大家,有需要的小伙伴可以参考下. 文实例讲述了jQuery下拉友情链接美化效果,jQuery下拉友情链接美化代码是一款基于jQu ...

  7. 已经导入了具有相同的简单名称“Interop.DSOFramer, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null”的程序集。

    错误  : 已经导入了具有相同的简单名称“Interop.DSOFramer, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null”的程序集. ...

  8. FileUpload无法赋值解决方案

    FileUpload无法赋值解决方案 编写人:CC阿爸 2015-1-27 今天在这里,我想与大家一起分享如何处理fileupload控件不能赋值的问题.有兴趣的同学,可以一同探讨与学习一下,否则就略 ...

  9. 一个伪ajax图片上传代码的例子

    一个伪ajax图片上传实现代码. 复制代码代码如下: <?php  if($_FILES){  ?>  <script>  window.parent.ajaxUploadPi ...

  10. 重拾C,一天一点点_12

    连续两天没写了,今天继续! sizeof 对象 或 sizeof (类型名) 返回一个整型值,等于指定对象或类型占用的存储空间字节数.(返回值是无符号整型值,其类型为size_t,在头文件<st ...