冒泡排序:相邻两元素进行比较,如有需要则进行交换,每完成一次循环就将最大元素排在最后(如从小到大排序),下一次循环是将其他的数进行类似操作
import java.util.Random;
public class SortTest {
/**
* @param args
*/
public static void main(String[] args) {
int[] array=new SortTest().numCreate();
new SortTest().numSort(array);
}
public int[] numCreate(){
int[] array = new int[10];
for(int i=0;i<10;i++){
//array[i]=(int)(Math.random()*100);
Random r = new Random();
array[i] = r.nextInt(100);
for(int j=0;j<i;j++){
if(array[i] == array[j]){
i--;
break;
}
}
}
for(int t=0;t<array.length;t++){
System.out.print(array[t]+",");
}
return array;
}
public void numSort(int[] array){
for(int i=0;i<array.length;i++){
for(int j=0;j<array.length-1-i;j++){
int temp;
if(array[j] < array[j+1]){
temp = array[j+1];
array[j+1] = array[j];
array[j] = temp;
}
}
}
for(int t=0;t<array.length;t++){
System.out.print("-----"+array[t]);
}
}
}
二分排序算法:(递归方式)
import java.util.Random;
public class SortTest {
/**
* @param args
*/
public static void main(String[] args) {
//int[] array=new SortTest().numCreate();
int[] array = {11,13,16,23,29,45,47,67,78,89};
int x=29;
System.out.println(new SortTest().numSort(array,x,0,array.length-1));
}
public int numSort(int[] array,int x,int begin,int end){
if(x < array[begin] || x>array[end] || begin > end)
return -1;
int middle = (begin+end)>>>1;
if(x < array[middle]){
return numSort(array,x,begin,middle);
} else if(x > array[middle]){
return numSort(array,x,middle,end);
}else {
return middle;
}
}
}
非递归查找
public int numSort(int[] array,int x,int begin,int end){
if(x < array[begin] || x>array[end] || begin > end)
return -1;
int index=0;
while( begin < end){
int middle = (begin+end)>>>1;
if(x < array[middle]){
end = middle-1;
}else if(x> array[middle]){
begin = middle + 1;
}else {
return middle;
}
}
return -1;
}
插入排序法:将一个记录插入到已排好序的有序表(有可能是空表)中,从而得到一个新的记录数增1的有序表。
public void numSort(int[] array){
for(int i=1;i<array.length;i++){
for(int j=0;j<i;j++){
int temp;
if(array[j] > array[i]){
temp = array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
for(int t=0;t<array.length;t++){
System.out.print("-----"+array[t]);
}
}
选择排序法:每一趟从待排序的数据元素中选出最小(或最大)的一个元素, 顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
public void numSort(int[] array){
for(int i=1;i<array.length;i++){
int index=0;
for(int j=1;j<=array.length-i;j++){
if(array[j] > array[index]){
index=j;
}
}
int temp;
temp = array[array.length-i];
array[array.length-i]=array[index];
array[index]=temp;
}
for(int t=0;t<array.length;t++){
System.out.print("-----"+array[t]);
}
}
分享到:
相关推荐
非常实用的C语言经典排序算法及举例,在公司面试时经常用到
11.[python入门教程]Python3中关于字典和列表以及指定元素排序方法举例说明 12.[python入门教程]Python3中的type和object用法 13.[python入门教程]python3中bs4.FeatureNotFound提示报错的处理办法 14.[python入门...
C语言程序设计-程序举例选择排序.pptx
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
这只是一个学习DEMO,不想要资源分,但没有免费的下拉选项,只好选最低的分了。
快速排序,比较高效的排序算法之一。这是一个例子,一个关于快速排序的例子。
插入排序,比较常见的排序算法之一。这是一个例子,一个关于插入排序的例子。
c语言中一种快速的排序方法qsort,qsort的排序方法的具体行事和各种形式的详细举例说明。可以省去很多不必要的比较和循环
C语言实战开发100例之排序
快速排序的一个例子通过一个例子实现快速排序
C语言程序设计-程序举例-冒泡排序.pptx
程序举例-冒泡排序 5-2 程序举例-冒泡排序 任务需求 使用一维数组的指针完成冒泡法排序。 任务分析 使用指针指向数组元素,完成数组元素的输入,并实现冒泡排序。 示例代码 #include main() { int n,i,j,k,x,a[10];...
三种冒泡排序算法的例子,比较区别与联系!
HashMap的应用实例 Map中元素存放是无序的 HashMap注意事项: 1,HashMap底层维护一个数组,我们向HashMap中所放置的对象实际上是存储在该数组...HashMap应用举例:控制台输入一句英语,简单统计各个单词出现的次数
经典算法.pdf 算法举例详解 河内塔 费式数列 巴斯卡三角形 三色棋 老鼠走迷官(一) 老鼠走迷官(二) 骑士走棋盘 八个皇后 八枚银币 生命游戏 字串核对 双色、三色河内塔 背包问题(Knapsack Problem) 数、运算 ...
c++编写的字符串排序 #include<conio.h> #include<stdio.h> #include #include<string> #define N 10/* 设定要输入的字符串个数,可更改 */ /*int cmp(char *p1,char *p2) /* 字符串比较函数 */ {int i=0; ...
排序问题,这里用1,2,3,4举例,你下载后可以通知改变数组来改变要排列的数
大家知道,[1,1-2,3-1-4,1-3,....] 如果按String 排序结果不是大家想要的,自己动手写了排序方法,举例:["10","10", "12", "1-2-3", "1-2", "5-2-1", "4", "4-6", "3-5-6", "3-2-1", "1-2-4", "1-1-4", "2", "3", ...
计算机后端-Java-Java核心基础-第22章 常用类 21. Comparable自然排序举例.avi
什么是冒泡排序 举例说明什么是冒泡 体育课排高低个 成绩排名 冒泡排序过程 冒泡排序示例