在实现数组元素排序时,排序的算法有很多,例如冒泡排序法,选择排序法,插入排序法以及快速排序法,来介绍插入排序和快速排序的具体实现吧
插入排序法
插入排序法德基本思路是:将要排序的数组分成两部分,每次从后面的数组部分中取出索引最小的数组元素,插入到前面数组的适当位置中。通常在数组开始排序时,将数组的第一个元素作为一组,后面的所有元素被当成另一组。插入排序法德实现代码如下:
public class insertSort{
public static void main(String args[]){
int arr[]={1,-33,-55,-77,88,91,-232,323,2,3,4,12,2,22,222,-12,-45,-56,00};
charu(arr);
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
public static int[] charu(int[] arr){
for(int i=1;i<arr.length;i++){
int tmp=arr[i];
int j=i-1;
while(tmp<arr[j]){
arr[j+1]=arr[j];
j--;
if(j==-1){
break;
}
}
arr[j+1]=tmp;
}
return arr;
}
}
快速排序法
快速排序法是当今被认为最好的排序算法之一,它的基本思路是:讲一个大的 数组的排序问题,分解成2个小的数组的排序,而将每个小的数组的排序又可以继续分解成更小的2个数组,这样一直递归分解下去, 直到数组的大小为最大为2。快速排序的实现代码如下:
public class quickSort{
public static void main(String args[]){
int[] array={12,32,51,9,2,5,4,43435,7678,899,90,1111255557,653,1,23,2,4,4,4};
kuaisu(array);
for(int i=0;i<array.length;i++)
System.out.println(array[i]);
}
public static int[] kuaisu(int[] array){
return quicksort(array,0,array.length-1);
}
public static int[] quicksort(int[] arr,int left,int right){
int t;
if(left<right){
int s=arr[left];
int i=left;
int j=right+1;
while(true){
while(i+1<arr.length&&arr[++i]<s);
while(j-1>-1&&arr[--j]>s);
if(i>=j){
break;
}else{
t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
arr[left]=arr[j];
arr[j]=s;
quicksort(arr,left,j-1);
quicksort(arr,j+1,right);
}
return arr;
}
}
网上流传着一个关于比较冒泡排序和快速排序的动画视频,感兴趣的可以看一下。
http://www.tudou.com/programs/view/htKY1-Rj9ZE/
现在给自己留下一个问题:从文件中读取数据,并将其存入到数组中,排序好之后再读入到文件中。
分享到:
相关推荐
易语言数组排序算法集合源码,数组排序算法集合,排序程序,冒泡排序,改冒泡法,双向泡排序,双响泡排序,直接插入排序,地精排序,地精排序2,地精排序3,二分排序,选择排序,梳子排序,希尔排序,快速排序
php排序 ,插入排序,选择排序,冒泡排序,快速排序。 整理出来,供大家参考一下
这个程序的头文件中包含四种排序方法:泡沫排序法(bubble),插入排序法(insertion),快速排序法(quick)和选择排序法(selection)。头文件中还使用了模板技术,以便可以同时实现几种类型的排序算法。 ...
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
该文档涵盖了数组排序的基本概念,包括如何实现各种排序算法,如冒泡排序、选择排序、插入排序、归并排序和快速排序。此外,文档还为每个排序算法提供了详细的代码示例和实现细节。 该文档还涵盖了高级主题,如如何...
idea项目:一个主类选择调用6个排序类,记录了学习排序算法的过程,可以自己更改优化,每一种排序是一个类,有需要可以copy走,可重用性强
本项目用C++中实现了冒泡排序、插入排序、堆排序、希尔排序、归并排序、基数排序、选择排序、桶排序、快速排序
内容索引:VC/C++源码,算法相关,算法 一个基于VC的数组排序算法源码实例,程序中使用了函数指针数组,一共包含四种排序方法:泡沫排序法(bubble)、插入排序法(insertion)、快速排序法(quick)和选择排序法...
堆排序 归并排序 选择排序 快速排序 插入排序 可选择数组初始状态(随机、正序、逆序) 通过输出的时间可以更好地比较在不同数组状态下 各种排序算法的时间复杂度
提供五种排序算法的C++实现方法,输入(待排序元素个数、排序码上界(采用随机生成数组方式)),可选择输出(原始数组、排序后数组、原始数组有序度和无序度、排序过程中数据比较次数与数据移动次数、数组中出现...
快速排序 希尔排序 插入排序 折半排序算法
选择排序 冒泡排序 插入排序 合并排序 快速排序算法原理及代码实现 不同排序算法时间效率的经验分析方法 验证理论分析与经验分析的一致性 void Init_Random();//数组随机数初始化函数声明 void Show_Array();//展示...
编程实现 快速排序,堆排序,归并排序,插入排序,选择排序; 对于不同的数组大小,比较这些算法的复杂度; 数组的测试,分为已排序数组和随机数组。
使用简单数组实现下面各种排序算法的功能,并进行比较, 排序算法如下: a) 插入排序; b) 希尔排序; c) 冒泡排序; d) 快速排序; e) 简单选择排序; f) 堆排序; g) 归并排序; h) 基数排序(选作); i) 其他; ...
排序顺序分“升序”和“降序”,排序方法总共7种,分别是:冒泡排序,简单选择排序,直接插入排序,希尔排序,快速排序,堆排序和基数排序。这些方法都是用c++实现的。还有一个搜索的功能,分别可以“线性搜索”和...
本实验含有四部分内容——直接插入排序、希尔排序、选择排序、快速排序,在上述内容的基础上,将所有排序算法整合在一个程序中。学生可参考教材中的伪代码。鼓励学生自创新思路,新算法。
java中在运用数组进行排序功能时,一般有四种方法:快速排序法、冒泡法、选择排序法、插入排序法(希尔排序(Shell Sort)是插入排序的一种),下面是一些示例,需要的朋友可以参考下
快速排序算法的改进思路 1.选取好的基准,是两边的数据个数尽量的均匀 取数组的第一个,中间,最后一个数据,取三个数中第二大的数作为基准 2. 不递归 3.与插入结合,当段内的数组个数小于等于16的时候,使用...
这是算法导论第一次实验代码,题目:当输入数据已经“几乎有序时”,插入排序很快,在实际...当上一层的快速排序调用返回后,对整个数组运行插入排序完成排序过程。证明:这一排序算法的期望时间复杂度为O(nk+nlg(n/k)).
选择排序 冒泡排序 插入排序 合并排序 快速排序算法原理及代码实现 不同排序算法时间效率的经验分析方法 验证理论分析与经验分析的一致性 void Init_Random();//数组随机数初始化函数声明 void Show_Array();//展示...