作者:未知 文章来源:HYXP 点击数:355 更新时间:2006-03-11 package com.cucu.test; /** * @author http://www.hyxp.net <a href=mailto:[email protected]>[email protected]</a> * @version 1.0 */ public class Sort { public void swap(int a[], int i, int j) { int tmp = a[i]; a[i] = a[j]; a[j] = tmp; } public int partition(int a[], int low, int high) { int pivot, p_pos, i; p_pos = low; pivot = a[p_pos]; for (i = low + 1; i <= high; i++) { if (a[i] > pivot) { p_pos++; swap(a, p_pos, i); } } swap(a, low, p_pos); return p_pos; } public void quicksort(int a[], int low, int high) { int pivot; if (low < high) { pivot = partition(a, low, high); quicksort(a, low, pivot - 1); quicksort(a, pivot + 1, high); } } public static void main(String args[]) { int vec[] = new int[] { 37, 47, 23, -5, 19, 56 }; int temp; //选择排序法(Selection Sort) long begin = System.currentTimeMillis(); for (int k = 0; k < 1000000; k++) { for (int i = 0; i < vec.length; i++) { for (int j = i; j < vec.length; j++) { if (vec[j] > vec[i]) { temp = vec[i]; vec[i] = vec[j]; vec[j] = temp; } } } } long end = System.currentTimeMillis(); System.out.println("选择法用时为:" + (end - begin)); //打印排序好的结果 for (int i = 0; i < vec.length; i++) { System.out.println(vec[i]); } // 冒泡排序法(Bubble Sort) begin = System.currentTimeMillis(); for (int k = 0; k < 1000000; k++) { for (int i = 0; i < vec.length; i++) { for (int j = i; j < vec.length - 1; j++) { if (vec[j + 1] > vec[j]) { temp = vec[j + 1]; vec[j + 1] = vec[j]; vec[j] = temp; } } } } end = System.currentTimeMillis(); System.out.println("冒泡法用时为:" + (end - begin)); //打印排序好的结果 for (int i = 0; i < vec.length; i++) { System.out.println(vec[i]); } //插入排序法(Insertion Sort) begin = System.currentTimeMillis(); for (int k = 0; k < 1000000; k++) { for (int i = 1; i < vec.length; i++) { int j = i; while (vec[j - 1] < vec[i]) { vec[j] = vec[j - 1]; j--; if (j <= 0) { break; } } vec[j] = vec[i]; } } end = System.currentTimeMillis(); System.out.println("插入法用时为:" + (end - begin)); //打印排序好的结果 for (int i = 0; i < vec.length; i++) { System.out.println(vec[i]); } //快速排序法(Quick Sort) Sort s = new Sort(); begin = System.currentTimeMillis(); for (int k = 0; k < 1000000; k++) { s.quicksort(vec, 0, 5); } end = System.currentTimeMillis(); System.out.println("快速法用时为:" + (end - begin)); //打印排序好的结果 for (int i = 0; i < vec.length; i++) { System.out.println(vec[i]); } } } 以下是运行结果: 选择法用时为:234 56 47 37 23 19 -5 冒泡法用时为:172 56 47 37 23 19 -5 插入法用时为:78 56 47 37 23 19 -5 快速法用时为:297 56 47 37 23 19 -5
//big to small public static void sequence(int[] a) { int length=a.length; for(int j=length-1;j>0;j--) for(int i=0;i<j;i++) { if(a[i]<a[i+1]) { int temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } }
import java.util.Random;public class BubbleSort { public static void sort(int[] a) { int i = a.length -1; while(i>-1 ){ int j=i; while(true){ if(j-1<0)break; if(isNeededSwap(a,j,j-1))swap(a,j,j-1); j--; } i--;
} } private static boolean isNeededSwap(int[] a,int i,int j){ return (a[i]<a[j]); } private static void swap(int [] a,int i,int j){ int temp = a[i]; a[i] =a [j]; a[j] = temp; } public static void main(String args[]) { int a[] = getTestData(10); show(a); BubbleSort.sort(a); show(a); } public static void show(int []a){ for(int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } System.out.println(); } public static int[] getTestData(int size){ int [] res = new int[size]; Random random = new Random(System.currentTimeMillis()); for(int i=0;i<size;i++){ res[i] = random.nextInt(); } return res; }}
用C语言代码和JAVA代码实现冒泡法排序
今天用C语言代码和JAVA代码实现了冒泡法排序的程序,代码如下:
C语言代码:
main()
{
int a[11];
int i,j,k;
printf("intput 10 numbers:\n");
for(i=1;i<11;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=1;i<=9;i++)
for(j=1;j<=10-i;j++)
if(a[j]>a[j+1])
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
printf("the sorted numbers:\n");
for(i=1;i<11;i++)
printf("%d",a[i]);
}
--------------------------------------------------------------------
JAVA代码(一):
public class Stort
{
public static void main(String[] args)
{
int t;
int intArray[]={1,8,2,9,10,3,0,4,6,5};
System.out.print("the sorted numbers are:");
for(int i=0;i<9;i++)
{
for(int j=i+1;j<10;j++)
{
if(intArray[i]>intArray[j])
{
t=intArray[i];
intArray[i]=intArray[j];
intArray[j]=t;
}
}
System.out.print(intArray[i]+" ");
}
}
}
--------------------------------------------------------------------
JAVA代码(二):class SortDemo
{
int i,j,t;
SortDemo()
{
i=0;
j=0;
t=0;
}
void sort(int n,int intArray[])
{
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(intArray[i]>intArray[j])
{
t=intArray[i];
intArray[i]=intArray[j];
intArray[j]=t;
}
}
}
}
}
public class Test
{
public static void main(String[] args)
{
int intArray[]={1,8,2,9,10,3,0,4,6,5};
SortDemo m=new SortDemo();
System.out.println("Befor sorting:");
for(int i=0;i<10;i++)
System.out.print(" "+intArray[i]);
System.out.println("\n---------------------");
m.sort(intArray.length,intArray);
System.out.println("After sorting:");
for(int i=0;i<10;i++)
System.out.print(" "+intArray[i]);
}
}
作者:未知 文章来源:HYXP 点击数:355 更新时间:2006-03-11
package com.cucu.test; /**
* @author http://www.hyxp.net <a href=mailto:[email protected]>[email protected]</a>
* @version 1.0
*/
public class Sort { public void swap(int a[], int i, int j) {
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
} public int partition(int a[], int low, int high) {
int pivot, p_pos, i;
p_pos = low;
pivot = a[p_pos];
for (i = low + 1; i <= high; i++) {
if (a[i] > pivot) {
p_pos++;
swap(a, p_pos, i);
}
}
swap(a, low, p_pos);
return p_pos;
} public void quicksort(int a[], int low, int high) {
int pivot;
if (low < high) {
pivot = partition(a, low, high);
quicksort(a, low, pivot - 1);
quicksort(a, pivot + 1, high);
} } public static void main(String args[]) {
int vec[] = new int[] { 37, 47, 23, -5, 19, 56 };
int temp;
//选择排序法(Selection Sort)
long begin = System.currentTimeMillis();
for (int k = 0; k < 1000000; k++) {
for (int i = 0; i < vec.length; i++) {
for (int j = i; j < vec.length; j++) {
if (vec[j] > vec[i]) {
temp = vec[i];
vec[i] = vec[j];
vec[j] = temp;
}
} }
}
long end = System.currentTimeMillis();
System.out.println("选择法用时为:" + (end - begin));
//打印排序好的结果
for (int i = 0; i < vec.length; i++) {
System.out.println(vec[i]);
}
// 冒泡排序法(Bubble Sort)
begin = System.currentTimeMillis();
for (int k = 0; k < 1000000; k++) {
for (int i = 0; i < vec.length; i++) {
for (int j = i; j < vec.length - 1; j++) {
if (vec[j + 1] > vec[j]) {
temp = vec[j + 1];
vec[j + 1] = vec[j];
vec[j] = temp;
}
} }
}
end = System.currentTimeMillis();
System.out.println("冒泡法用时为:" + (end - begin));
//打印排序好的结果
for (int i = 0; i < vec.length; i++) {
System.out.println(vec[i]);
} //插入排序法(Insertion Sort)
begin = System.currentTimeMillis();
for (int k = 0; k < 1000000; k++) {
for (int i = 1; i < vec.length; i++) {
int j = i;
while (vec[j - 1] < vec[i]) {
vec[j] = vec[j - 1];
j--;
if (j <= 0) {
break;
}
}
vec[j] = vec[i];
}
}
end = System.currentTimeMillis();
System.out.println("插入法用时为:" + (end - begin));
//打印排序好的结果
for (int i = 0; i < vec.length; i++) {
System.out.println(vec[i]);
} //快速排序法(Quick Sort) Sort s = new Sort();
begin = System.currentTimeMillis();
for (int k = 0; k < 1000000; k++) {
s.quicksort(vec, 0, 5);
}
end = System.currentTimeMillis();
System.out.println("快速法用时为:" + (end - begin));
//打印排序好的结果
for (int i = 0; i < vec.length; i++) {
System.out.println(vec[i]);
}
} }
以下是运行结果:
选择法用时为:234
56
47
37
23
19
-5
冒泡法用时为:172
56
47
37
23
19
-5
插入法用时为:78
56
47
37
23
19
-5
快速法用时为:297
56
47
37
23
19
-5
public static void sequence(int[] a)
{
int length=a.length;
for(int j=length-1;j>0;j--)
for(int i=0;i<j;i++)
{
if(a[i]<a[i+1])
{
int temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
import java.util.Random;public class BubbleSort { public static void sort(int[] a) {
int i = a.length -1;
while(i>-1 ){
int j=i;
while(true){
if(j-1<0)break;
if(isNeededSwap(a,j,j-1))swap(a,j,j-1);
j--;
}
i--;
}
}
private static boolean isNeededSwap(int[] a,int i,int j){
return (a[i]<a[j]);
}
private static void swap(int [] a,int i,int j){
int temp = a[i];
a[i] =a [j];
a[j] = temp;
} public static void main(String args[]) {
int a[] = getTestData(10);
show(a);
BubbleSort.sort(a);
show(a);
}
public static void show(int []a){
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
System.out.println();
}
public static int[] getTestData(int size){
int [] res = new int[size];
Random random = new Random(System.currentTimeMillis());
for(int i=0;i<size;i++){
res[i] = random.nextInt();
}
return res;
}}
{
for(int i=1;i<num.length-1;i++)
for(int j=num.length-1;j>=1;j--)
{
if(num[j]<num[j-1])
{
num[0]=num[j];
num[j]=num[j-1];
num[j-1]=num[0];
}
}
}