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
请发表评论