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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨立考 中级黑马   /  2012-9-29 21:27  /  2233 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

定义一个数组 例如:int[] arr = new int[] { 77, 90, 16, 54, 56 },完成利用选择排序对数组中的元素进行排序

   

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 国庆快乐

查看全部评分

7 个回复

正序浏览
是该问,如果为了后期方便使用,则需要两个方法  第一个是进行排序...然后第二个是交互.  其实先不要去想代码怎么实现.关键的一点是自己有思路
    首先是使用for循环获得每一个元素.然后把每一个元素进行判断(if)  大小见分晓!   然后在使用交互 .刚开始学  你不把这个思路弄明白  到了后面学其他的知识的时候 很容易把这样的小知识点遗忘...不过到了后期有了更简单的排序方式  

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 国庆快乐

查看全部评分

回复 使用道具 举报
胡斌 中级黑马 2012-9-29 22:41:03
7#
排序的方法多种多样:选择排序时间复杂服O(n2),而且选择排序是不稳定的。时间复杂度比较高,不太利于效率问题。建议用快排。
排序方法种类:1,插入排序。2,希尔排序。3,冒泡排序。4,快速排序。5,选择排序。6,堆排序。7,归并排序。8,箱排序。9,基数排序。
至于你的选择排序就比较简单:两个for循环就完事,这么简单程序思想,我认为楼主应该试着自己思考,我想这对还是有比较大的帮助的。如果拾人牙慧,那么你怎么最终成长起来。
好了,希望对楼主有所帮助。

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
看视频Day4-04、Day4-05
回复 使用道具 举报
本帖最后由 王宝龙 于 2012-9-29 21:59 编辑
  1. //直接选择排序一枚
  2. class SelectSortTest
  3. {
  4.         public static void main(String[] arge)
  5.         {
  6.                 int [] a = {77,90,16,54,56};
  7.                 for(int i=0;i<a.length;i++)
  8.                 {
  9.                         System.out.print(a[i]+",");
  10.                 }
  11.                 System.out.println();
  12.                 int [] b = SelectSort(a);
  13.                 for(int i=0;i<a.length;i++)
  14.                 {
  15.                         System.out.print(b[i]+",");
  16.                 }
  17.         }
  18.         public static int[] SelectSort(int [] a)
  19.         {
  20.                 int i,j,min;
  21.                 int temp;
  22.                
  23.                 for(i=0;i<a.length-1;i++)
  24.                 {
  25.                         min = i; //设第i个元素为最小
  26.                         for(j=i+1;j<a.length;j++)//寻找关键字最小的元素
  27.                         {
  28.                                 if(a[j]<a[min])
  29.                                         min = j;//记住最小元素的下标               
  30.                         }
  31.                         if(min!=i)//当最小元素的下标不为i时交换位置
  32.                         {
  33.                                 temp=a[i];
  34.                                 a[i]=a[min];
  35.                                 a[min]=temp;
  36.                         }
  37.                 }
  38.                 return a;
  39.         }
  40. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
写了一个选择排序,一个冒泡排序
  1. class ArrayTest
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[] arr = {77,90,16,54,56};
  6.                 paixu(arr);
  7.                 //maopaoPaixu(arr);
  8.                 print(arr);
  9.         }
  10.         //选择排序
  11.         public static void paixu(int arr[])
  12.         {
  13.                 for (int x=0;x<arr.length-1 ;x++ )
  14.                 {
  15.                         for (int y=x+1;y<arr.length ;y++ )
  16.                         {
  17.                                 if (arr[x]>arr[y])
  18.                                 {
  19.                                         int temp = 0;
  20.                                         temp = arr[x];
  21.                                         arr[x] = arr[y];
  22.                                         arr[y] = temp;
  23.                                 }
  24.                         }
  25.                 }
  26.         }

  27.         //冒泡排序
  28.         public static void maopaoPaixu(int arr[])
  29.         {
  30.                 for (int x=0;x<arr.length-1 ;x++ )
  31.                 {
  32.                         for (int y=0;y<arr.length-x-1 ;y++ )
  33.                         {
  34.                                 if (arr[y]>arr[y+1])
  35.                                 {
  36.                                         int temp = arr[y];
  37.                                         arr[y] = arr[y+1];
  38.                                         arr[y+1] = temp;
  39.                                 }
  40.                         }
  41.                 }
  42.         }
  43.        
  44.         //进行数组打印
  45.         public static void print(int arr[])
  46.         {
  47.                 for(int x=0;x<arr.length;x++)
  48.                 {
  49.                         System.out.println(arr[x]);
  50.                 }
  51.         }
  52. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
既然你这样理解,那我也没什么好解释的。
回复 使用道具 举报
这是在刷贴吗?太明显了,实在不明自己先找找资料吧。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马