public class ArraySort {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[] = { 100, 3, 0, 4, 5, 7, 23, 22, 33, 35, 76, 3, 32, 32, 98 };
System.out.println("目标数组为:");
print(a);
System.out.println("冒泡排序后的数组为:");
print(bubbleSort(a));
System.out.println("选择排序后的数组为:");
print(selectSort(a));
System.out.println("插入排序后的数组为:");
print(insertSort(a));
System.out.println("快速排序之后的数组为:");
print(quickSort(a, 0, a.length-1));
}
// 冒泡排序
public static int[] bubbleSort(int data[]) {
for (int i = 0; i < data.length; i++) {
int temp = 0;
for (int j = 0; j < data.length - i - 1; j++) {
if (data[j] > data[j + 1]) {
temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
}
return data;
}
// 选择排序
public static int[] selectSort(int data[]) {
for (int i = 0; i < data.length; i++) {
int index = 0;
int temp;
for (int j = 1; j < data.length - i; j++) {
if (data[index] < data[j]) {
index = j;
}
}
temp = data[index];
data[index] = data[data.length - 1 - i];
data[data.length - 1 - i] = temp;
}
return data;
}
// 插入排序
public static int[] insertSort(int data[]) {
for (int i = 1; i < data.length; i++) {
int temp = 0;
for (int j = 0; j < i; j++) {
if (data[i] < data[j]) {
temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
}
return data;
}
// 快速排序
public static int[] quickSort(int data[], int from, int to) {
int p;
if (from < to) {
p = position(data, from, to);
quickSort(data, from, p - 1);
quickSort(data, p + 1, to);
}
return data;
}
//求data[from]这个元素在排好序之后的数组里面的位置,并将该位置的值附为data[from]
public static int position(int data[], int from, int to) {
int i = from;
int j = to;
int temp = data[i];
while (i < j) {
while (i < j && data[j] > temp) {
j--;
}
if (i < j) {
data[i] = data[j];
i++;
}
while (i < j && data[i] < temp) {
i++;
}
if (i < j) {
data[j] = data[i];
j--;
}
}
data[i] = temp;
return i;
}
// 打印数组
public static void print(int[] data) {
for (int i = 0; i < data.length; i++) {
System.out.print(data[i] + " ");
}
System.out.println();
}
}
运行结果:
目标数组为:
100 3 0 4 5 7 23 22 33 35 76 3 32 32 98
冒泡排序后的数组为:
0 3 3 4 5 7 22 23 32 32 33 35 76 98 100
选择排序后的数组为:
0 3 3 4 5 7 22 23 32 32 33 35 76 98 100
插入排序后的数组为:
0 3 3 4 5 7 22 23 32 32 33 35 76 98 100
快速排序之后的数组为:
0 3 3 4 5 7 22 23 32 32 33 35 76 98 100
分享到:
相关推荐
插入排序、冒泡排序、归并排序、快速排序四种排序方式的C++实现,各写成了一个函数,主函数中可以选择调用那一个。初始化数组时用的是随机种子srand((int)time(0))。在宏中定义数组大小。
某个二维数组存放了一系列的字符串,试利用排序的一些算法(如插入、冒泡、快速排序等)例如:二维数组的字符串如下: char s[][20]={“while”,”if”,“else”,”do”,“for”,”switch”,“case”,};
二维数组的排序,其中包含冒泡排序、选择排序、插入排序和快速选择排序。
数组下标从0开始的排序,其中包含了各种对数组排序的方法,有插入排序(直接插入排序、希尔排序),交换排序(起泡排序、快速排序),选择排序(简单选择排序,堆排序(另外写))、归并排序(递归,非递归)。
数组下标从1开始的排序,其中包含了各种对数组排序的方法,有插入排序(直接插入排序、希尔排序),交换排序(起泡排序、快速排序),选择排序(简单选择排序,堆排序)、归并排序(递归,非递归)。
易语言数组排序算法集合源码,数组排序算法集合,排序程序,冒泡排序,改冒泡法,双向泡排序,双响泡排序,直接插入排序,地精排序,地精排序2,地精排序3,二分排序,选择排序,梳子排序,希尔排序,快速排序
提供五种排序算法的C++实现方法,输入(待排序元素个数、排序码上界(采用随机生成数组方式)),可选择输出(原始数组、排序后数组、原始数组有序度和无序度、排序过程中数据比较次数与数据移动次数、数组中出现...
C语言中常见的排序算法包括归并排序、选择排序、直接插入排序、希尔排序、冒泡排序、快速排序、堆排序以及顺序查找和二分查找。这些排序算法各有特点,在不同情况下有着不同的应用场景和性能表现。 归并排序(Merge...
1.插入排序(直接插入排序、折半插入排序、希尔排序); 2.交换排序(冒泡泡排序、快速排序); 3.选择排序(直接选择排序、堆排序); 4.归并排序;5.基数排序。
java中在运用数组进行排序功能时,一般有四种方法:快速排序法、冒泡法、选择排序法、插入排序法(希尔排序(Shell Sort)是插入排序的一种),下面是一些示例,需要的朋友可以参考下
易语言数组的排序源码,数组的排序,取随机文本,文本数组到列表框,冒泡排序,递归冒泡排序,选择排序,插入排序,快速排序
该文档涵盖了数组排序的基本概念,包括如何实现各种排序算法,如冒泡排序、选择排序、插入排序、归并排序和快速排序。此外,文档还为每个排序算法提供了详细的代码示例和实现细节。 该文档还涵盖了高级主题,如如何...
列举五种java数组中常用的排序方法:快速排序、冒泡排序、选择排序、插入排序、希尔排序
易语言数组排序模块源码,数组排序模块,冒泡,选择_asm,交换_asm,选择_,交换,冒泡_E自带例子_改良后,插入,快速排序,快速排序_asm,asm快速排序,快速排序2,快速排序2_asm,asm快速排序2
一维数组的各种排序,其中包含冒泡排序、选择排序、插入排序和快速选择排序
排序算法有许多种,这里介绍4中排序算法:冒泡排序,选择排序,快速排序和插入排序,以从小到大为例。 一、冒泡排序 冒泡排序的原理是,对给定的数组进行多次遍历,每次均比较相邻的两个数,如果前一个比后一个大,...
c#实现数组排序,包括冒泡排序法、插入排序法、选择排序法、希尔排序法、快速排序法
涵盖了数组的冒泡、选择、插入等常见排序方法,并有详细的注释,通俗易懂
idea项目:一个主类选择调用6个排序类,记录了学习排序算法的过程,可以自己更改优化,每一种排序是一个类,有需要可以copy走,可重用性强