Java数组-选择排序-排序的性能问题
来源:互联网 发布:mac 设置用户头像 编辑:程序博客网 时间:2024/06/05 04:16
之前的选择排序代码为:
class SelectionSort
{
public static void main(String[] args)
{
int[] arr = {14,19,11,109,56,3};
selectionSort(arr);
System.out.println("Hello World!");
for(int x=0;x<arr.length;x++)
{
System.out.print(arr[x]+",");
}
}
/*
选择排序
*/
public static void selectionSort(int[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for (int y=x+1;y<arr.length ;y++ )
{
if(arr[x]>arr[y])
{
//把最小的数,排序到前面
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
for(int z=0;z<arr.length;z++)
{
System.out.print(arr[z]+",");
}
System.out.println();
}
}
}
从程序中可以看出选择排序中是通过x循环1,y循环一遍,找出当前遍历的这组数中的最小值,而每当y循环1,就将比较的两个数中较小的放在前面,就是说,当x=0时,y循环一遍,仅仅将数组中最小的数字替换到数组的第一个元素里;而当x=1时,则是从数组的第二个元素开始遍历,找出数组剩余元素的最小值,替换到第二个数组元素处。但是每当y循环1时,比较的两个数,后面的数小时,就会进行换位,这样,换位的次数就会比较多,那么可不可以找出遍历的那部分数组中的最小值之后再进行元素位置替换呢?显然是可以的。
下面是对选择排序部分的改进:
public static void selectionSort2(int[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
int num = arr[x];
int index = x;
for(int y=x+1;y<arr.length;y++)
{
if(num>arr[y])
{
num=arr[y];
index = y;
}
}
if(index!=x)
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
选择排序改进后的整个程序为:
/*
考虑到性能问题,对选择排序法进行一定的改良
思路:找到数组中的最小元素,将其和arr[0]换位,一次类推进行换位
换位次数相比之前的选择排序法,效率明显提高
实现: 一个变量记录最小值,一个变量记录最小值的索引
*/
class SelectionSort2
{
public static void main(String[] args)
{
System.out.println("Hello World!");
int[] arr={34,19,11,109,3,56};
selectionSort2(arr);
printArray(arr);
}
public static void selectionSort2(int[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
int num = arr[x];
int index = x;
for(int y=x+1;y<arr.length;y++)
{
if(num>arr[y])
{
num=arr[y];
index = y;
}
}
if(index!=x)
swap(arr,x,index);
}
}
public static void swap(int[] arr,int x,int y)
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
public static void printArray(int[] arr)
{
for(int x=0;x<arr.length;x++)
{
if(x<arr.length-1)
System.out.print(arr[x]+",");
else
System.out.println(arr[x]);
}
}
}
- Java数组-选择排序-排序的性能问题
- java数组的排序,选择排序,冒泡排序,插入排序
- Java数组排序-选择排序
- java 数组选择排序
- java数组选择排序
- java数组选择排序
- 数组的选择排序
- 数组的选择排序
- 数组的排序:冒泡排序、选择排序
- 关于数组排序的性能问题
- java中数组的选择排序和冒泡排序
- java实现数组的冒泡排序、选择排序代码
- Java 中数组的冒泡排序 和 直接选择排序
- java 数组的排序,含冒泡、插入、选择、快速排序。
- java类实现数组的五种排序 冒泡排序、选择排序、插入排序、希尔排序、数组排序
- 冒泡排序、选择排序、插入排序、快速排序算法的时间性能分析(java实现)
- 关于数组的排序问题(冒泡排序,选择排序,插入排序)
- 关于数组的排序问题(冒泡排序,选择排序,插入排序)
- Java中使用三角函数
- c++简单的ATL COM开发和调用实例
- 欢迎使用CSDN-markdown编辑器
- AllenZhao Java项目中读取properties文件,以及六种获取路径的方法
- WSGI 简介
- Java数组-选择排序-排序的性能问题
- 【单片机】DS1302
- 解决 网页本地调试通过,上传到服务器上后运行不加载JavaScript的问题
- rest与soap
- 究竟怎样写代码才算是好代码
- java文件I/O
- Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法
- ''最少有一个"为什么跟distinct 有关
- RSA算法原理