常见排序法:
public class Sort{
public static int count=0;
public boolean LT(int num1,int num2){
return num1<num2;
}
public void output(int[] array){
System.out.print("第"+count+"次排序:");
for(int i=0;i<array.length;i++)
System.out.print(array+" ");
System.out.println();
}
//冒泡排序法
public void BubbleSort(int[] array){
boolean swap=true;
int index=0;
int i=0;
while(i<array.length-1){
int temp=array;
for(int j=i;j<array.length;j++){
if(!LT(array,array[j])){
int temp2=array;
array=array[j];
array[j]=temp2;
swap=true;
index=j;
}else{
swap=false;
}
}
i++;
if(swap){
array=array[index];
array[index]=temp;
i++;
}
output(array);
}
}
//直接插入排序法
public void InsertSort(int[] array){
for(int i=1;i<array.length;++i){
if (LT(array,array)){
int temp=array;
array=array;
array=temp;
for(int j=i-1;j>0;--j){
if(LT(array[j],array[j-1])){
array[j]=array[j-1];
array[j-1]=temp;
}else{
break;
}
}
output(array);
}
}
}
//快速排序法
private int Partition(int array[],int low,int high){
int temp=array[low];
int pivotkey=array[low];
while(low<high){
while(low<high&&array[high]>pivotkey)--high;
array[low]=array[high];
while(low<high&&array[low]<=pivotkey)++low;
array[high]=array[low];
}
array[low]=temp;
output(array);
return low;
}
public void QSort(int array[],int low,int high){
if(low<high){
int pivotloc=Partition(array,low,high);
QSort(array,low,pivotloc-1);
QSort(array,pivotloc+1,high);
}
}
void QuickSort(int array[]){
QSort(array,0,array.length-1);
}
public static void main(String args[]){
int array[]={49,38,65,97,76,13,27,49};
Sort sort=new Sort();
System.out.println("===================================");
sort.output(array);
System.out.println("优化冒泡排序法");
sort.BubbleSort(array);
System.out.println();
System.out.println("===================================");
array=new int[]{49,38,65,97,76,13,27,49};
sort.output(array);
System.out.println("直接插入排序法");
sort.InsertSort(array);
System.out.println();
System.out.println("===================================");
array=new int[]{49,38,65,97,76,13,27,49};
sort.output(array);
System.out.println("快速排序法");
sort.QuickSort(array);
}
}
分享到:
相关推荐
### Java 实现数据结构常见排序算法及详解 #### 排序算法概述 排序算法是计算机科学中的基础概念之一,主要用于将一系列数据按照特定规则进行排列。根据数据处理方式的不同,排序算法大致分为两大类:比较排序与非...
这里我们将深入探讨在C语言中实现的六种常见排序算法:插入排序、Shell排序、堆排序、冒泡排序、快速排序以及归并排序。 1. **插入排序**:插入排序是一种简单的排序算法,它的工作原理类似于我们日常生活中的整理...
以下是对七种常见排序算法的详细解释: 1. **冒泡排序**:冒泡排序是最基础的排序算法之一,其工作原理是通过不断地交换相邻的逆序元素,使得最大的元素逐渐“冒”到数组的末尾。该过程会重复进行,直到所有元素都...
交换排序是基于比较对象之间大小关系,通过交换元素位置来达到排序目的的一种排序算法。其中,冒泡排序是最基础的交换排序,它通过相邻元素间的比较和交换,逐步将较大的元素推向序列末尾。优化后的双向冒泡排序能...
- **定义**:一种高效的排序算法,采用分治法策略。 - **工作原理**:选择一个“基准”元素,通过一趟排序将待排序列表分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对...
内容概要:本文详细介绍了几种常见的排序算法及其Python实现,包括冒泡排序、选择排序、插入排序、快速排序、归并排序和堆排序。每种算法都通过代码示例解释了其基本思想、实现步骤、时间复杂度和空间复杂度,并分析...
### C语言常见排序算法及比较 #### 插入排序(Insertion Sort) **基本思想**: 插入排序是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置...
"八种常见排序算法总结" 直接插入排序是一种简单的排序算法,它的思想是每次选择一个元素 K 插入到之前已排好序的部分 A[1…i]中,插入过程中 K 依次由后向前与 A[1…i]中的元素进行比较。若发现 A[x]>=K,则将 K ...
以下是对标题“各常见排序算法实践”及描述中涉及的排序算法的详细说明: 1. **简单选择排序**: 简单选择排序是一种基于比较的排序算法,其基本思想是在未排序序列中找到最小(或最大)元素,存放到排序序列的...
常见排序算法的实现与性能比较JAVA 问题描述:实现合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序算法 实验要求: A. 在随机产生的空间大小分别为 N = 10, 1000,10000,100000 的排序样本(取值为[0...
5. **归并排序(Merge Sort)**:也是基于分治法的排序算法,将序列分为两半,分别进行排序,然后将两个有序子序列合并成一个完整的有序序列。归并排序在任何情况下都能保证O(n log n)的时间复杂度。 6. **堆排序...
五种常见排序法的比较 归并排序 快速排序 选择排序 插入排序 冒泡排序
在"排序算法.zip"这个压缩包中,很可能是包含了关于各种常见排序算法的源代码、示例或教程。 1. 冒泡排序(Bubble Sort): 冒泡排序是一种简单的交换排序方法,通过重复遍历数组,比较相邻元素并交换位置,使得较...
这个压缩包“常见排序算法.zip”包含了一份名为“常见排序算法.pdf”的文档,很可能详细介绍了多种常见的排序算法及其原理。下面,我们将深入探讨这些排序算法的核心概念、工作原理以及它们的应用场景。 1. 冒泡...
这篇博客“Java常见排序算法”深入探讨了如何在Java中实现不同的排序方法,这对于我们理解和优化程序性能至关重要。以下是对这些常见排序算法的详细介绍: 1. **冒泡排序** (Bubble Sort): 冒泡排序是最基础的...
报告的标题是“中科大算法导论课程实验 常见排序算法的实现与性能比较”,指出了本实验报告的重点在于实现并比较各类常见排序算法。 #### 描述解读 描述部分指明了实验的目的和范围,要求对六种排序算法——合并...
本篇文章将详细探讨C#实现的四种常见排序算法:冒泡排序、选择排序、快速排序和插入排序。 1. **冒泡排序**: 冒泡排序是一种简单的交换排序,通过不断比较相邻元素并交换位置,使较大的元素逐渐“浮”到数组的...
JavaScript 中常见排序算法详解
这个名为"Python常见排序算法汇总共2页.pdf.zip"的压缩包文件,很可能是包含了一份关于Python中常用排序算法的总结文档,虽然描述中并未提供详细内容,但我们可以推测它可能涵盖了以下常见的Python排序算法: ...
以下是用Python实现的五种常见排序算法: 1. 冒泡排序(Bubble Sort): ```python def bubble_sort(arr): n = len(arr) for i in range(n): for j in range(0, n-i-1): if arr[j] > arr[j+1]: arr[j], arr[j+...