冒泡排序 怎样去实现面向对象的思想

Percy__Lee 2015-08-19 11:19:44
我想用C#写一个冒泡排序,冒泡的思想是理解的,但是在实际的项目中的使用就显得很难了,假如我传进去的是不仅仅是int型的,可能是string类型甚至是一个对象,这样的话,该怎么实现对他们的排序,需要写几个什么类?或者给我讲讲应该从哪里下手思考这个实现。各位大虾,求解答下,灰常感谢
...全文
171 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Percy__Lee 2015-08-19
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
微软已经提供了对应的ICompare<T>接口,话说这个只是泛型问题,跟OO搭不上关系吧
嗯嗯 我看看 谢谢
Percy__Lee 2015-08-19
  • 打赏
  • 举报
回复
引用 4 楼 moonwrite 的回复:
List<T> 有一个Sort方法 你的思想已经很接近提出泛型设计者的思想了 好好干
哈哈 一起加油哦
Percy__Lee 2015-08-19
  • 打赏
  • 举报
回复
引用 3 楼 dongxinxi 的回复:
或者弄个泛型方法就行 public void Sort<T>(T[] array) where T : IComparable<T> { t1.CompareTo(t2) } 或者 public void Sort<T>(T[] array, IComparer<T> comparer) { comparer.Compere(t1, t2) }
非常感谢,我上午也是想的泛型去实现,但是有些地方还是没有想清楚,您这样一说,顿时大悟,非常感谢
moonwrite 2015-08-19
  • 打赏
  • 举报
回复
List<T> 有一个Sort方法 你的思想已经很接近提出泛型设计者的思想了 好好干
  • 打赏
  • 举报
回复
或者弄个泛型方法就行 public void Sort<T>(T[] array) where T : IComparable<T> { t1.CompareTo(t2) } 或者 public void Sort<T>(T[] array, IComparer<T> comparer) { comparer.Compere(t1, t2) }
  • 打赏
  • 举报
回复
用泛型就好了 class BubbleSort<T> where T : IComparable<T> { public void Sort(T[] array) { } } 对于自定义类型A,实现接口 class A : IComparable<A> { public int CompareTo(A other) { 比较逻辑自己定义 } }
  • 打赏
  • 举报
回复
微软已经提供了对应的ICompare<T>接口,话说这个只是泛型问题,跟OO搭不上关系吧
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 1/29 页 1 跟我学 Java 面向对象程序设计技术及应用——应用冒泡排序算法实 现数组元素排序的 Java 程序实现示例 1.1 什么是冒泡排序算法 1.1.1 什么是冒泡排序算法 对于什么是冒泡排序算法(Bubble Sort),读者可以查询百科。在百科中的定义如下(如 下示图显示具体的定义):它重复地走访过要排序的元素列,依次比较两个相邻的元素,如 果顺序(如从大到小、首字母从 Z 到 A)错误就把他们交换过来。走访元素的工作是重复地 进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。 经过这样的排序后,最后的元素应该会是最大的数(当然,也可能是最小的数,取决于 数据的排序格则和要求)。因此,一批数据中的较小元素会经由这样的"排序交换"慢慢"浮 (冒泡)"到这批数据的顶端(升序或降序排列) ——此排序算法由此得名。 1.1.2 冒泡排序算法的实现原理 比较两个相邻的元素,将值大的元素交换至右端。对每一对相邻的元素都完成同样的比 较工作直到最后一对,针对所有的元素都重复以上的步骤,除了最后一个元素,直到没有任 何一对数字需要进行比较为止。 因此,在程序设计实现方面,则要运用双层嵌套循环进行冒泡排序编程实现。 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 2/29 页 2 1.1.3 冒泡排序算法的主要特性 -- 算法稳定性 冒泡排序其实就是把一批数据中比较小的元素往前调或者把大的元素往后调,而比较是 相邻的两个元素进行比较,数据交换也只发生在这两个元素之间——两两比较、两两交换。 但如果相邻的两个元素值相等,则不会再进行交换的(减少了交换的次数)。而如果两 个元素的值相等、但元素在位置上并没有相邻,那么即使通过前面的两两交换把两个元素相 邻起来,这时候也不会对它们进行交换。所以相同元素值的两个元素的前后顺序在此算法中 并没有被改变,故冒泡排序是一种稳定排序算法。 1.2 应用冒泡排序算法实现数组元素排序的 Java 程序实现示例 1.2.1 在 MyEclipse 开发工具中创建 Java 工程项目 1、启动 MyEclipse 开发工具,并选择 Java Project 工程项目 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 3/29 页 3 2、在工程项目创建的对话框中输入项目名称 JavaDemo,并选择项目存放的目录路径 3、点击对话框中的完成(Finish)按钮,将创建出一个空的 Java 应用程序项目 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 4/29 页 4 1.2.2 在创建的 Java 应用程序项目中添加示例程序类 1、 右击所创建的 Java 应用程序项目名称 JavaDemo, 在弹出的快捷菜单中选择 New 新建一个 Java 程序类 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 5/29 页 5 2、在类创建的对话框中输入包名称为 com.bluedream.demo,类名称为 JavaBubbleSort,并选 择需要在 JavaBubbleSort 类中创建出 main()方法 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 6/29 页 6 3、点击对话框中的完成(Finish)按钮,将创建出一个空的 Java 程序类,在该类中自动地包 含有 main()方法 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 7/29 页 7 4、编程示例中的功能实现的程序代码 在该 Java 程序中,定义待排序的数组(目前数组中的各个元素是预先定义的,后续可以 由用户输入),然后对该数组中的各个元素值应用冒泡排序算法实现排序,并打印出排序前 和排序后的数组中的各个元素值,以方便进行对比。 (1)程序代码示例 在程序设计实现方面主要是应用双层嵌套 for 循环进行冒泡排序编程实现, 参考下面示例 代码中的嵌套 for 循环的实现代码。 package com.bluedream.demo; public class JavaBubbleSort { public static void main(String[] args) { /** * 定义存储待排序的数组 */ int[] someOneArray; /** * 定义一个变量,用来存储临时的数据 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作

13,189

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧