算法(选择排序的算法)
2015-11-05 09:19
155 查看
是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。
首先以一个元素为基准,从一个方向开始扫描,比如从左到右扫描,以A[0]为基准,接下来从A[0]….A[9]中找出最小的元素,将其与A[0]交换。然后将其基准位置右移一位,重复上面的动作,比如,以A[1]为基准,找出A[1]~A[9]中最小的,将其与A[1]交换。一直进行到将基准位置移到数组最后一个元素时排序结束。
选择排序代码
package cp.hlg.ken;
public class Select {
/**
* 选择排序
* @param a
*/
public void selectSort(int [] a) {
int n = a.length;
//{49 ,38, 65 ,97, 76 ,13 ,27 ,49}
//趟数
for(int k=0; k<n-1; k++) {
int min = k;
//比较次数
for(int i=k+1; i<n; i++) {
if(a[i] < a[min]) {
min = i;
}
}
if(k != min) {
int temp = a[k];
a[k] = a[min];
a[min] = temp;
}
}
}
/***
* 测试选择排序
*
*/
public static void main(String[] args) {
int[] a={49 ,38, 65 ,97, 76 ,13 ,27 ,49};
Select select=new Select();
select.selectSort(a);
for (int j = 0; j < a.length - 1; j++) {
System.out.print(a[j] + ",");
}
}
}
选择排序的结果
13,27,38,49,49,65,76,
【示例】:
初始关键字 [49 38 65 97 76 13 27 49]
第一趟排序后 13 [38 65 97 76 49 27 49]
第二趟排序后 13 27 [65 97 76 49 38 49]
第三趟排序后 13 27 38 [97 76 49 65 49]
第四趟排序后 13 27 38 49 [76 97 65 49]
第五趟排序后 13 27 38 49 49 [97 65 76]
第六趟排序后 13 27 38 49 49 65 [97 76]
第七趟排序后 13 27 38 49 49 65 76 [97]
最后排序结果 13 27 38 49 49 65 76 97
选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。
首先以一个元素为基准,从一个方向开始扫描,比如从左到右扫描,以A[0]为基准,接下来从A[0]….A[9]中找出最小的元素,将其与A[0]交换。然后将其基准位置右移一位,重复上面的动作,比如,以A[1]为基准,找出A[1]~A[9]中最小的,将其与A[1]交换。一直进行到将基准位置移到数组最后一个元素时排序结束。
选择排序代码
package cp.hlg.ken;
public class Select {
/**
* 选择排序
* @param a
*/
public void selectSort(int [] a) {
int n = a.length;
//{49 ,38, 65 ,97, 76 ,13 ,27 ,49}
//趟数
for(int k=0; k<n-1; k++) {
int min = k;
//比较次数
for(int i=k+1; i<n; i++) {
if(a[i] < a[min]) {
min = i;
}
}
if(k != min) {
int temp = a[k];
a[k] = a[min];
a[min] = temp;
}
}
}
/***
* 测试选择排序
*
*/
public static void main(String[] args) {
int[] a={49 ,38, 65 ,97, 76 ,13 ,27 ,49};
Select select=new Select();
select.selectSort(a);
for (int j = 0; j < a.length - 1; j++) {
System.out.print(a[j] + ",");
}
}
}
选择排序的结果
13,27,38,49,49,65,76,
【示例】:
初始关键字 [49 38 65 97 76 13 27 49]
第一趟排序后 13 [38 65 97 76 49 27 49]
第二趟排序后 13 27 [65 97 76 49 38 49]
第三趟排序后 13 27 38 [97 76 49 65 49]
第四趟排序后 13 27 38 49 [76 97 65 49]
第五趟排序后 13 27 38 49 49 [97 65 76]
第六趟排序后 13 27 38 49 49 65 [97 76]
第七趟排序后 13 27 38 49 49 65 76 [97]
最后排序结果 13 27 38 49 49 65 76 97
相关文章推荐
- Java数据结构及算法实例:选择排序 Selection Sort
- Java中的数组排序方式(快速排序、冒泡排序、选择排序)
- PHP简单选择排序算法实例
- VC++实现选择排序算法简单示例
- java实现选择排序算法
- Java排序算法总结之选择排序
- Python选择排序、冒泡排序、合并排序代码实例
- 用php实现选择排序的解决方法
- python选择排序算法的实现代码
- 选择排序
- 使用Java完成《算法导论》习题2.2-2
- sell学习第二课-选择排序
- 三种最简单基础的排序 选择排序 冒泡排序 直接插入排序 运用了函数指针数组
- C语言---选择排序
- 排序算法--选择排序(简单选择排序、堆排序)java实现
- 排序算法二:选择排序
- 排序算法C++实现(1)
- 选择、冒泡、插入-排序
- scala 选择排序 冒泡排序
- xcode-C语言出接触_选择排序