package sort;
public class Sort {
public static void bubbleSort(int[] numbers){
for(int i = numbers.length -1 ;i>0;i--){
for(int j = 0;j<i;j++){
if(numbers[j] > numbers[j+1]){
swap(numbers, j, j+1);
}
}
}
System.out.println("冒泡排序:");
for (int number : numbers) {
System.out.print(number + " ");
}
System.out.println();
}
public static void insertSort(int[] numbers){
for(int i = 1;i<numbers.length;i++){
if(numbers[i] < numbers[i-1]){
int temp = numbers[i];
int j = i-1;
for(; (j>=0) &&(temp < numbers[j]);j--){
numbers[j+1] = numbers[j];
}
numbers[j+1] = temp;
}
}
System.out.println("插入排序:");
for (int number : numbers) {
System.out.print(number + " ");
}
System.out.println();
}
public static int[] mergeSort(int[] numbers,int start,int end){
if(start < end){
int mid = (start + end)/2;
mergeSort(numbers, start, mid);
mergeSort(numbers, mid+1, end);
merge(numbers, start, mid, mid+1, end);
}
return numbers;
}
public static void selectSort(int[] numbers){
int min;
int mink;
for(int i = 0;i<numbers.length;i++){
min = numbers[i];
mink = i;
for(int j = i;j<numbers.length;j++){
if(numbers[j] < min){
min = numbers[j];
mink = j;
}
}
if(!(min == numbers[i])){
numbers[mink] = numbers[i];
numbers[i] = min;
}
}
System.out.println("选择排序:");
for (int i : numbers) {
System.out.print(i + " ");
}
System.out.println();
}
private static void merge(int[] numbers,int start1,int end1,int start2,int end2){
int i = start1,j = start2;
int k = 0;
int temp[] = new int[end2-start1+1];
while(i <= end1 && j <= end2){
if(numbers[i] <= numbers[j]){
temp[k++] = numbers[i++];
}else{
temp[k++] = numbers[j++];
}
}
while(i <= end1){
temp[k++] = numbers[i++];
}
while(j <= end2){
temp[k++] = numbers[j++];
}
for(int m = 0; m < temp.length;m++){
numbers[start1 + m] = temp[m];
}
}
private static void swap(int[] numbers,int index1,int index2){
int temp = numbers[index1];
numbers[index1] = numbers[index2];
numbers[index2] = temp;
}
public static void main(String[] args) {
int[] numbers = {456,845,343,421,256,487,487,690,558,455,658,466,677,788,643};
int[] result =mergeSort(numbers, 0, numbers.length-1);
System.out.println("归并排序:");
for (int i : result) {
System.out.print(i + " ");
}
System.out.println();
bubbleSort(numbers);
selectSort(numbers);
insertSort(numbers);
}
}
分享到:
相关推荐
7种排序算法程序汇总 冒泡排序 选择排序 插入排序 希排序尔 快速排序 二叉排序树 堆排序
合并排序算法和快速排序算法采用了采用分治法、递归的方法,将时间复杂度降为O(nlogn)。在本次实验中将数据量提到5万的时候,该类算法运行时间仍在几毫秒左右,而上面的3种算法运行时间已经到达十几秒左右,效率...
最快的排序算法 C语言最简单的排序算法冒泡排序并返回排序前索引序号,排序算法数据结构
桶式排序法桶式排序法桶式排序法桶式排序法
该程序包含7大排序算法: # sort.bubbleSort() #冒泡排序 # sort.shellSort() #希尔排序 # sort.insertionSort() #插入排序 # sort.Selectionsort1() #选择排序 # sort.heapSort() #堆排序 # sort.countSort() ...
快速排序法(quick sort)是目前所公认最快的排序方法之一(视解题的对象而定),虽然快速排序法在最差状况下可以达O(n2),但是在多数的情况下,快速排序法的效率表现是相当不错的。 快速排序法的基本精神是在数列中...
常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结
js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js...
排序算法归档排序算法归档排序算法归档排序算法归档排序算法归档排序算法归档排序算法归档排序算法归档排序算法归档排序算法归档排序算法归档排序算法归档排序算法归档排序算法归档
排序算法是一种基本并且常用的算法。由于实际工作中处理的数量巨大,所以排序算法 对算法本身的速度要求很高。 而一般我们所谓的算法的性能主要是指算法的复杂度,一般用O方法来表示。在后面我将 给出详细的说明...
1、常见排序算法实现(1-6选择几个算法练习) 1)问题描述:输入一组关键字序列分别实现下列排序。 (1)实现简单选择排序、直接插入排序和冒泡排序。 (2)实现希尔排序算法。 (3)实现折半插入排序。 ...
排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中 进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序 记录,在排序过程中需要...
该文档涵盖7种排序法及其解释,有助于理解插入排序,希尔排序,选择排序,冒泡排序,快速排序,堆排序,基数排序。
排序算法排序算法排序算法排序算法排序算法排序算法排序算法
一个堆排序算法 c++写的 逻辑相同 可自行 改为java 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一...
希尔排序,冒泡排序、快速排序递归排序,快速排序非递归排序,快速排序改进算法
归并排序(Merge sort)(台灣譯作:合併排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
最快的排序算法 最快的内部排序法—桶排序法,排序算法数据结构
题目一: 内排序算法比较 1) 对以下6种常用的内部排序算法进行比较:起泡排序,直接插入排序,简单选择排序,快速排序,希尔排序,堆排序。 2) 待排序记录的文件个数不小于1000( 其数据用伪随机数产生),至少用5组...
常用排序算法的动态演示系统的开发,演示冒泡排序法、快速排序法、直接插入排序法、折半插入排序法、树形选择排序法