Java和C冒泡排序

版权声明:编写不易,可看不可转,请知悉! https://blog.csdn.net/zha6476003/article/details/85237548

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

猜你喜欢

转载自blog.csdn.net/zha6476003/article/details/85237548