1. 程式人生 > >Java和C氣泡排序

Java和C氣泡排序

Java

示例程式碼:

public class test {
	public static void main(String[] args) {
		String str = "321dca5"; //需要排序的字串
		char[] new_string;
		new_string = sorting(str); //呼叫sorting進行排序
		System.out.println(new_string); //輸出結果
	}
	
	public static char[] sorting(String str) {
		/**
		 * 傳入一個字串str排序後返回排序後的字串
		 * */
char[] arr; char t; //交換時零時存放資料 int str_len; str_len = str.length(); arr = str.toCharArray(); for (int i=0;i<str_len-1;i++) {//最後一個值不用管-1即可,java中執行如果不減一下面if要重寫,否則j+1會出現下標越界 for (int j=0;j<str_len-1-i;j++) { if (arr[j] > arr[j+1]) { //>升序 <降序 //替換j和j+1的值 t = arr[
j]; arr[j] = arr[j+1]; arr[j+1] = t; } } } //String new_str = arr.toString(); //這裡不需要轉成String即可直接輸出字串(不曉得陣列中發生了什麼) return arr; } } eclipse中執行結果: 1235acd

C語言

示例程式碼:

# include <stdio.h>

void sort(int * a,int len);
int main(void){
	int arr[] = {20,3,4,1};
	int i,num;
	
	num =
sizeof(arr) / sizeof(arr[0]); sort(arr,num); //因為arr是一個數組,直接使用陣列名就能得到地址編號,所以這裡直接傳陣列名稱進去就可以了 for (i=0;i<num;i++){ printf("%d\n",arr[i]); } return 0; } void sort(int * pArr,int len){ int i,j,t; for (i=0; i<len-1; ++i) //一直向後移動最後一個肯定是最小的所以執行len-1即可(不減1也可以) { for (j=0; j<len-1-i; ++j) { //如果前面一個學生的成績大於後面這個學生,則替換這兩個學生的資訊 if (pArr[j] > pArr[j+1]) //>升序 <降序 { t = pArr[j]; pArr[j] = pArr[j+1]; pArr[j+1] = t; } } } } Dev-c++中執行結果: 1 3 4 20