用选择的方式对数组进行排序,并写出对应的优化后的代码实现。(重点写思路、原理)
2013-11-24 21:58
609 查看
class s1
{
/*
选择排序的比较方式:首先选择一个位置,让该位置上的数与下一个位置上的数进行比较,两者比较后取最值占取该位置,
并用该位置上的值继续去和下一个位置上的值继续比较。
原理:如果第一次选择了0角标上的值,那么第一次循环比较后,最值会出现在0角标的位置上。
*/
public static void selectSort(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])
{
swap(arr,x,y);
}
}
}
}
public static void swap(int arr[],int a,int b)
{
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
public static String arrayToString(int arr[])
{
String str="{";
for (int x=0;x<arr.length;x++)
{
if (x!=arr.length-1)
{
str=str+arr[x]+",";
}
else
str=str+arr[x]+"}";
}
return str;
}
public static void main(String[] args)
{
int arr[]={9,2,4,8,5,6,7,3,1};
selectSort(arr);
System.out.print(arrayToString(arr));
}
}
{
/*
选择排序的比较方式:首先选择一个位置,让该位置上的数与下一个位置上的数进行比较,两者比较后取最值占取该位置,
并用该位置上的值继续去和下一个位置上的值继续比较。
原理:如果第一次选择了0角标上的值,那么第一次循环比较后,最值会出现在0角标的位置上。
*/
public static void selectSort(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])
{
swap(arr,x,y);
}
}
}
}
public static void swap(int arr[],int a,int b)
{
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
public static String arrayToString(int arr[])
{
String str="{";
for (int x=0;x<arr.length;x++)
{
if (x!=arr.length-1)
{
str=str+arr[x]+",";
}
else
str=str+arr[x]+"}";
}
return str;
}
public static void main(String[] args)
{
int arr[]={9,2,4,8,5,6,7,3,1};
selectSort(arr);
System.out.print(arrayToString(arr));
}
}
相关文章推荐
- 用冒泡的方式对数组进行排序, 并写出对应的优化后的代码实现。(重点写思路、原理)
- 常见对象_数组高级选择排序原理图解、数组高级选择排序代码实现
- 【Java】数组的冒泡排序和选择排序(原理+代码实现)
- c#例题:输入学生的学号,姓名,分数,然后根据分数进行排序再输出最终结果。重点学习用结构体定义数组的表达方式
- 使用指针方式进行数组排序 选择排序:
- Java中选择,冒泡,快排原理代码 阶层 数组的排序 数组的排序 以及代码大全
- 选择,插入,希尔,快速,堆,归并排序六种排序方式的Java 实现和性能对比(付代码)
- java实现数组的冒泡排序、选择排序代码
- 有一堆扑克牌,其中某张牌的张数超过了扑克牌总数的一半,请找到这张牌。写出算法思路、代码实现和算法的时间复杂度,要求算法尽可能高效。假设给定一个扑克牌的数组poker和它的大小n,请返回所求的扑克牌。
- js实现的对象数组根据对象的键值进行排序代码
- 请通过代码实现以下功能:输入一个5X5的二维数组,将数组进行排序,其中一维数组按照平均值降序,一维数组内部升序排列。
- C语言 选择排序算法原理和实现 从数组中 找出最小的元素然后交换位置
- Java程序员从笨鸟到菜鸟(二)Java实现冒泡排序、快速排序、插入排序、选择排序等基本排序方式
- 分享javascript实现的冒泡排序代码并优化
- 019 一维数组 选择法对十个整数进行排序
- 【模型比较与选择】交叉验证方法原理及R语言代码实现
- 堆排序的数组实现代码
- 插入排序、冒泡排序、选择排序、希尔排序、快速排序、归并排序、堆排序和LST基数排序的C++代码实现
- 利用最大熵进行阈值分割从而实现灰度图像的二值化的原理概要及OpenCV代码
- 动态数组实现冒泡排序与选择排序