A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ww448483689 中级黑马   /  2013-8-15 22:58  /  1653 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

大家都知道冒泡排序法,谁能提供个更简单的排序法

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

5 个回复

倒序浏览
有用linq
  1.             // 初始数组  
  2.             int[] arr = { 8, 10, 5, 6, 45, 676, 20, 35 };

  3.             // 对其按升序排序  
  4.             var q = arr.OrderBy(s => s);

  5.             /// 对其按降序排序  
  6.             /// var q = arr.OrderByDescending(s => s);  

  7.             int[] sortArr = q.ToArray();
  8.             foreach (var item in sortArr)
  9.             {
  10.                 Console.WriteLine(item);
  11.             }
  12.             Console.ReadKey();
复制代码

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

回复 使用道具 举报
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace test3
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] arr = { 8, 10, 5, 6, 45, 676, 20, 35 };
            List<int> list = new List<int>();//声明了一个list,长度可变数组
            foreach (int nums in arr)
            {
                list.Add(nums);
            }            
            list.Sort();//升序
            foreach (int value in list)
            {
                Console.Write(value+",");
            }
            Console.WriteLine();
            list.Reverse();//将list中的元素反转(先list.Sort(),然后list.Reverse()就可以达到降序的目的)
            foreach (int value in list)
            {
                Console.Write(value+",");
            }
            Console.ReadKey();
        }
    }
}

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

回复 使用道具 举报
请问,List<> 这个可变数组是在哪个,或者哪部分视频里的?
回复 使用道具 举报
直接插入排序基本思想
    假设待排序的记录存放在数组R[1..n]中。初始时,R[1]自成1个有序区,无序区为R[2..n]。从i=2起直至i=n为止,依次将R[i]插入当前的有序区R[1..i-1]中,生成含n个记录的有序区。

    算法描述
function InsertSort(arr) { //插入排序->直接插入法排序
  var st = new Date();
  var temp, j;
  for(var i=1; i<arr.length; i++) {
   if((arr[i]) < (arr[i-1])) {
    temp = arr[i];
    j = i-1;
    do {
     arr[j+1] = arr[j];
     j--;
    }
    while (j>-1 && (temp) < (arr[j]));
    arr[j+1] = temp;
   }//endif
  }
  status = (new Date() - st) + ' ms';
  return arr;
}

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

回复 使用道具 举报
直接选择排序基本思想
   n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:
①初始状态:无序区为R[1..n],有序区为空。
②第1趟排序
    在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。
  ……
③第i趟排序
  第i趟排序开始时,当前有序区和无序区分别为R[1..i-1]和R[i..n](1≤i≤n-1)。该趟排序从当前无序区中选出关键字最小的记录R[k],将它与无序区的第1个记录R[i]交换,使R[1..i]和R[i+1..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。
    这样,n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。

    算法描述
function SelectSort(arr) { //选择排序->直接选择排序
  var st = new Date();
  var temp;
  for(var i=0; i<arr.length; i++) {
   var k = i;
   for(var j=i+1; j<arr.length; j++) {
    if((arr[j]) < (arr[k]))
     k = j;
   }
   if (k != i){
    temp = arr[i];
    arr[i] = arr[k];
    arr[k] = temp;
   }
  }
  status = (new Date() - st) + ' ms';
  return arr;
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马