找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3225|回复: 13

[分享] [转贴]冒泡排序

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-6-15 05:40:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 st788796 于 2013-6-15 05:49 编辑

冒泡排序1:(自创的,不知道它叫什么排序,和冒泡差不多。。。)

  1. public void RisePot(ref int [] array)
  2.          {
  3.              int a = array.Length;
  4.              for (int i = 0; i < a-1; i++)
  5.              {
  6.                  for (int j = a - 1; j > i; j--)
  7.                  {
  8.                     if (array[i] > array[j])
  9.                     {
  10.                          int temp = array[i];
  11.                          array[i] = array[j];
  12.                          array[j] = temp;
  13.                     }
  14.                  }
  15.              }
  16.         }
复制代码
冒泡排序2:

  1. public void RisePot(ref int [] array)
  2.          {
  3.              int a = array.Length;
  4.              for (int i = 0; i < a-1; i++)
  5.              {
  6.                  for (int j = i+1; j <a; j++)
  7.                  {
  8.                      if (array[i] > array[j])
  9.                      {
  10.                          int temp = array[i];
  11.                          array[i] = array[j];
  12.                          array[j] = temp;
  13.                      }
  14.                  }
  15.             }
  16.         }
复制代码
41 快速排序:

  1. public void QuickSort(ref int [] arr,int low ,int high)
  2.          {
  3.             if (low < high)
  4.              {
  5.                 int mid = GetMid(arr, low, high);
  6.                  QuickSort(ref arr, low, mid - 1);
  7.                  QuickSort(ref arr, mid + 1, high);
  8.              }
  9.          }
  10. public int GetMid(int[] array, int low, int high)
  11.          {
  12.              int temp = array[low];
  13.             while (low < high)
  14.              {
  15.                 while (low < high && array[high] >= temp)
  16.                  {
  17.                     high--;
  18.                  }
  19.                  if (low < high)
  20.                  {
  21.                      array[low] = array[high];
  22.                      low++;
  23.                  }
  24.                 while (low < high && array[low] <= temp)
  25.                 {
  26.                      low++;
  27.                  }
  28.                  if (low < high)
  29.                  {
  30.                      array[high] = array[low];
  31.                      high--;
  32.                  }
  33.              }
  34.              array[low] = temp;
  35.              return low;
  36.          }
复制代码

评分

参与人数 1D豆 +5 收起 理由
ScmTools + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2013-6-15 08:22:11 来自手机 | 显示全部楼层
不用这么复杂的,用linq一句话搞定。

点评

是一句话搞定所有的排序吗? 能给大家提供下具体的代码例子吗?  详情 回复 发表于 2013-6-15 09:18
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2013-6-15 08:40:58 | 显示全部楼层
MSDN http://msdn.microsoft.com/zh-cn/library/vstudio/bb386967.aspx
找到一个例子

  1. public static Func<T,Tkey> DynamicLambda<T, Tkey>(string propertyName)
  2.         {
  3.          
  4.             ParameterExpression p = Expression.Parameter(typeof(T), "p");
  5.             Expression body = Expression.Property(p, typeof(T).GetProperty(propertyName));
  6.             
  7.             var lambda = Expression.Lambda<Func<T, Tkey>>(body, p);
  8.            
  9.             return lambda.Compile();
  10.         }
复制代码

  1. List<Employee> list = new List<Employee>();
  2.             list.Add(new Employee() { Name = "张三", Age = 21, Salary = 1800f, Job = "UI" });
  3.             list.Add(new Employee() { Name = "李四", Age = 25, Salary = 2000f, Job = "DBA" });
  4.             list.Add(new Employee() { Name = "王五", Age = 24, Salary = 2000f, Job = "UI" });
  5.             list.Add(new Employee() { Name = "李九", Age = 31, Salary = 2900f, Job = "DBA" });
  6.             list.Add(new Employee() { Name = "张一", Age = 21, Salary = 2100f, Job = "UI" });
  7.             list.Add(new Employee() { Name = "王三", Age = 32, Salary = 2100f, Job = "DBA" });
  8.   
  9.              //按Age排序
  10.             list.OrderBy(DynamicLambda<Employee,int>("Age"));
  11.             //按Salary排序
  12.             // list.OrderBy(DynamicLambda<Employee,float>("Salary"));

  13.             list.ForEach(e => Console.WriteLine(e.Name + "\t" + e.Age + "\t" + e.Salary));
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

发表于 2013-6-15 09:18:36 | 显示全部楼层
zhf7878 发表于 2013-6-15 08:22
不用这么复杂的,用linq一句话搞定。

是一句话搞定所有的排序吗?

能给大家提供下具体的代码例子吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-15 23:44:31 | 显示全部楼层
本帖最后由 灯火 于 2013-6-16 22:06 编辑

Array.Sort、List(Of T).Sort、 IEnumerable(Of T) .OrderBy都可以排序。
用.NET编程,集合的排序、搜索、筛选等等都不用自己写算法了。

点评

刚刚入门,前辈给个例子吧  详情 回复 发表于 2013-6-16 14:26
老哥,是你吗?  详情 回复 发表于 2013-6-16 14:24
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-6-16 14:24:39 | 显示全部楼层
灯火 发表于 2013-6-15 23:44
Array.Sort、List(Of T).Sort、 IEnumerable(Of T) .GroupBy都可以排序。
用.NET编程,集合的排序、搜索、 ...

老哥,是你吗?

点评

是我。恭喜老弟网站重新开张。  详情 回复 发表于 2013-6-16 22:00
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-6-16 14:26:52 | 显示全部楼层
灯火 发表于 2013-6-15 23:44
Array.Sort、List(Of T).Sort、 IEnumerable(Of T) .GroupBy都可以排序。
用.NET编程,集合的排序、搜索、 ...

刚刚入门,前辈给个例子吧

点评

MSDN上有各种应用例子。 对于你的数组,执行Array.Sort(arr)即完成排序。  详情 回复 发表于 2013-6-16 22:04
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-16 22:00:39 | 显示全部楼层
XDSoft 发表于 2013-6-16 14:24
老哥,是你吗?

是我。恭喜老弟网站重新开张。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-16 22:04:39 | 显示全部楼层
st788796 发表于 2013-6-16 14:26
刚刚入门,前辈给个例子吧

MSDN上有各种应用例子。
对于你的数组,执行Array.Sort(arr)即完成排序。

点评

老哥,加我下QQ啊,7598165, 还有论坛上面的管理QQ群:51133425,你加入下吧。  详情 回复 发表于 2013-6-16 22:14
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-6-16 22:14:20 | 显示全部楼层
灯火 发表于 2013-6-16 22:04
MSDN上有各种应用例子。
对于你的数组,执行Array.Sort(arr)即完成排序。

老哥,加我下QQ啊,7598165, 还有论坛上面的管理QQ群:51133425,你加入下吧。

点评

我不用QQ,嫌那东西闹得慌。  详情 回复 发表于 2013-6-16 22:19
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-16 22:19:22 | 显示全部楼层
XDSoft 发表于 2013-6-16 22:14
老哥,加我下QQ啊,7598165, 还有论坛上面的管理QQ群:51133425,你加入下吧。

我不用QQ,嫌那东西闹得慌。

点评

呵呵,又见到老哥了,还记得不?这会儿还是QQ方便,我的124471899  详情 回复 发表于 2013-6-16 22:38
闹的慌也好玩啊,闲的时候侃侃,忙的时候关了就清净了  详情 回复 发表于 2013-6-16 22:29
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-6-16 22:29:27 | 显示全部楼层
灯火 发表于 2013-6-16 22:19
我不用QQ,嫌那东西闹得慌。

闹的慌也好玩啊,闲的时候侃侃,忙的时候关了就清净了:P
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2013-6-16 22:38:34 | 显示全部楼层
灯火 发表于 2013-6-16 22:19
我不用QQ,嫌那东西闹得慌。

呵呵,又见到老哥了,还记得不?这会儿还是QQ方便,我的124471899

点评

你好啊,早看到老弟了,只是前段一直登录不上来。 这里有不少十多年的老网友,XD一复活,马上浮出水面,可见A2魅力无穷。 年龄大了,喜欢清静简单,电脑和手机都没装QQ。 最近学习了一下AutoCAD.NET,感觉这个才  详情 回复 发表于 2013-6-16 23:19
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-16 23:19:05 | 显示全部楼层
eachy 发表于 2013-6-16 22:38
呵呵,又见到老哥了,还记得不?这会儿还是QQ方便,我的124471899

你好啊,早看到老弟了,只是前段一直登录不上来。
这里有不少十多年的老网友,XD一复活,马上浮出水面,可见A2魅力无穷。
年龄大了,喜欢清静简单,电脑和手机都没装QQ。
最近学习了一下AutoCAD.NET,感觉这个才是A2正道,祝本版块越办越好。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-1 13:32 , Processed in 0.434741 second(s), 65 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表