Java和C氣泡排序
阿新 • • 發佈:2019-01-03
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