简单选择排序java
“简单选择排序java”相关的资料有哪些?“简单选择排序java”相关的范文有哪些?怎么写?下面是小编为您精心整理的“简单选择排序java”相关范文大全或资料大全,欢迎大家分享。
选择排序原理及Java实现
选择排序原理及Java实现
选择排序(Selection Sort )分为两种 简单选择排序(Simple Selection Sort) 和树形选择排序。
简单选择排序(Simple Selection Sort):
简单选择排序类似于冒泡排序(Bubble Sort) ,每次都会在剩下的元素集合中选择出一个最值出来填充到当前位置。唯一的区别是,冒泡排序在每次发现比当前值小于(或大于)时,都会交换元素的位置, 而 简单选择排序是选择剩余元素中的最值和当前位置交换数据。
比如对于元素集合R={37, 40, 38, 42, 461, 5, 7, 9, 12} 在第一趟排序中:37直接和5交换, 形成新的序列
R1={5,40,38,42,461,37,7,9,12}
在第二趟排序中:40直接和7交换, 形成新的序列
R2={5,7,38,42,461,37,40,9,12}
以此类推,直到最后一个元素(注意:在第二趟排序中,38比42小,但是他们并没有交换数据)。
以下是简单选择排序的一个Java实现版本:
public static void selectionSort(int[] data) {
if (data == null || data.leng
选择排序原理及Java实现
选择排序原理及Java实现
选择排序(Selection Sort )分为两种 简单选择排序(Simple Selection Sort) 和树形选择排序。
简单选择排序(Simple Selection Sort):
简单选择排序类似于冒泡排序(Bubble Sort) ,每次都会在剩下的元素集合中选择出一个最值出来填充到当前位置。唯一的区别是,冒泡排序在每次发现比当前值小于(或大于)时,都会交换元素的位置, 而 简单选择排序是选择剩余元素中的最值和当前位置交换数据。
比如对于元素集合R={37, 40, 38, 42, 461, 5, 7, 9, 12} 在第一趟排序中:37直接和5交换, 形成新的序列
R1={5,40,38,42,461,37,7,9,12}
在第二趟排序中:40直接和7交换, 形成新的序列
R2={5,7,38,42,461,37,40,9,12}
以此类推,直到最后一个元素(注意:在第二趟排序中,38比42小,但是他们并没有交换数据)。
以下是简单选择排序的一个Java实现版本:
public static void selectionSort(int[] data) {
if (data == null || data.leng
JAVA冒泡、插入、选择排序算法
经常在笔试(或面试)中出现的JAVA经典算法,本人特此整理,希望有用
import java.io.*;
public class Paixu {
// 冒泡排序法 public void Maopao(int a[]) { for (int i = 1; i < a.length; i++) { for (int j = 0; j < a.length - i; j++) { if (a[j] > a[j + 1]) { int temp = a[j + 1]; a[j + 1] = a[j]; a[j] = temp; } } } } // 插入排序法: public void Charu(int a[]) { for (int i = 1; i < a.length; i++) { for (int j = 0; j < i; j++) { if (a[j] > a[i]) { int temp = a[i]; for (int k = i; k > j; k--) { a[k] = a[k--]; } a[j] = temp; }
java排序方法
用Java语言实现的各种排序,包括插入排序、冒泡排序、选择排序、Shell排序、快速排序、归并排序、堆排序、SortUtil等。
用Java语言实现的各种排序,包括插入排序、冒泡排序、选择排序、Shell排序、快速排序、归并排序、堆排序、SortUtil等。
插入排序:
package org.rut.util.algorithm.support;
import org.rut.util.algorithm.SortUtil;
/**
* @author treeroot
* @since 2006-2-2
* @version 1.0
*/
public class InsertSort implements SortUtil.Sort{
/* (non-Javadoc)
* @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
*/
public void sort(int[] data) {
int temp;
for(int i=1;i<data.length;i++){
for(int j=i;(j>0)&&(data[j]<data[j-1]);j--){
SortUtil.sw
java快速排序、冒泡排序、插入排序
java里面常用的三种排序的示例源代码
package com.staconfree;
//主要要明白原理
public class Sort {
//快速排序1
private static int times = 0;
private static void QuickSort(int e[], int first, int end) {
int i = first, j = end, temp = e[first];
while (i < j) {
while (i < j && e[j] >= temp)
j--;
e[i] = e[j];
while (i < j && e[i] <= temp)
i++;
e[j] = e[i];
}
e[i] = temp;
times++;
System.out.println("第"+times+"次排序后:"+temp+"i="+i);
for (int m = 0; m < end+1; m++)
System.out.println(e[m]);
if (first < i - 1){
Syst
c语言试题库简单选择题
1.下列语句中符合C语言语法的赋值语句是
(A) a=7+b+c=a+7; (B) a=7+b++=a+7; (C) a=7+b,b++,a+7 (D) a=7+b,c=a+7;
2.在C语言中,要求运算数必须是整型的运算符是
(A) % (B) / (C) < (D) !
3.以下有4组用户标识符,其中合法的一组是
(A) For (B) 4d (C) f2_G3 (D) WORD
4. 在C语言中,形参的缺省存储类是
(A) auto (B) register (C) static (D) extern
5. 以下不能正确进行字符串赋初值的语句是
(A) char str[5]="good!"; (B) char str[]="good!";
(C) char *str="good!"; (D) char str[5]={‘g',‘o',‘o',‘d'};
6.若定义:int a=511,*b=&a;, 则printf("%d\n",*b);的输出结果为
(A) 无确定值 (B) a的地址
JAVA冒泡法排序
import java.util.*;
import http://www.77cn.com.cnng.*;
public class Test1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a1=new int[]{1,2,4,12,33,78,9,3};
int i,j;
for(i=0;i<a1.length;i++){
for(j=0;j<a1.length-i-1;j++){
int temp;
if(a1[j]>a1[j+1]){
temp=a1[j];
a1[j]=a1[j+1];
a1[j+1]=temp;
}
}
}
for(int r=0;r<a1.length;r++){
System.out.println(a1[r]);
}
}
}
import java.util.*;
public class Test2{
public static void main(String[] args){
String a1="adfgrcsmnvbnmxz";
String res
java 排序算法代码大全
java 排序算法代码大全
2012-04-17 14:58:02| 分类: JAVA 知识积累 |字号订阅 /**
* 插入排序:直接插入排序、折半插入排序和系尔排序 * 交换排序:冒泡排序和快速排序 * 选择排序:简单选择排序和堆排序 * 归并排序:归并排序 *
* 基本思想
* 插入排序:将第N个记录插入到前面(N-1)个有序的记录当中。 * 交换排序:按照某种顺序比较两个记录的关键字大小,然后根据需要交换两个记录的位置。 * 选择排序:根据某种方法选择一个关键字最大的记录或者关键字最小的记录,放到适当的位置。 *
* 排序方法比较
* 排序方法平均时间最坏时间辅助存储
* 直接插入排序 O(N2) O(N2) O(1) * 起泡排序 O(N2) O(N2) O(1)
* 快速排序 O(Nlog2N) O(N2) O(Nlog2N) * 简单选择排序 O(N2) O(N2) O(1
Java排序算法汇总大全
package com.softeem.jbs.lesson4;
import java.util.Random; /**
* 排序测试类 *
* 排序算法的分类如下:
* 1.插入排序(直接插入排序、折半插入排序、希尔排序);
* 2.交换排序(冒泡泡排序、快速排序);
* 3.选择排序(直接选择排序、堆排序);
* 4.归并排序;
* 5.基数排序。 *
* 关于排序方法的选择:
* (1)若n较小(如n≤50),可采用直接插入或直接选择排序。
* 当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。
* (2)若文件初始状态基本有序(指正序),则应选用直接插人、冒泡或随机的快速排序为宜;
* (3)若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序。 * */
public class SortTest {
/**
* 初始化测试数组的方法
堆排序求TopK(java)
建立一个长度为K的堆,求一组数据中最小的K个数
时间复杂度是O(N*logK)
package com.test;
public class topheap {
//取len个数据中最小的k个元素,维护一个顶元素最大的堆,不用对这个堆排序double heap[];
int k;//top k
int len;//共len个数据
topheap(int kk,int ll)
{
k = kk;
len = ll;
heap = new double[k+1];
}
/*
* 将data[pos]到data[end]的数据建堆
*/
public void toheap(int pos,int end,double h[])
{
int i = pos;
int j=i;
double value = h[i];
while(true)
{
if(2*i>end)
break;
double l = h[2*i];
j = 2*i;
double max = l;
if(2*i+1 <= end)
{
double r = h[2*i+1];
if(l<r)
{
max = r;
j = 2*i+1;
}
}
if(value<h[j])
{
h[i] = h[j];
i = j;
}
建立一个长度为K