1.冒泡排序
(1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
(2)实例:
package com.hanchao.sort;/*********************** * 冒泡排序 * @author:han * @version:1.0 * @created:2013-10-14 *********************** */public class BubbleSort { public static void main(String[] args) { int[] a = {49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51}; int temp = 0; for (int i = 0; i < a.length; i++) { for (int j = 0; j < a.length - 1 - i; j++) { if(a[j] > a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } for (int i = 0; i < a.length; i++) { System.out.print(a[i] + ","); } }}
2.简单选择排序
(1)基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;
然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。
(2)实例:
package com.hanchao.sort;/*********************** * 选择排序 * @author:han * @version:1.0 * @created:2013-10-14 *********************** */public class SelectSort { public static void main(String[] args) { int[] a = {1,54,6,3,78,34,12,45}; int position = 0; for (int i = 0; i < a.length; i++) { int j = i + 1; position = i; int temp = a[i]; for (; j < a.length; j++) { if (a[j] < temp) { //如果后一个数小于前一个数 temp = a[j]; position = j; } } a[position] = a[i]; a[i] = temp; } //显示结果 for (int i = 0; i < a.length; i++) { System.out.print(a[i] + ","); } }}
3.直接插入排序
(1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排
好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数
也是排好顺序的。如此反复循环,直到全部排好顺序。
(2)实例
package com.hanchao.sort;/*********************** * 插入排序 * @author:han * @version:1.0 * @created:2013-10-14 *********************** */public class InsertSort { public static void main(String[] args) { // int[] a = {49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51}; int[] a = {49,38,65,97,76,13,50}; int temp=0; //声明一个临时变量 for(int i=1; i < a.length; i++){ int j=i-1; temp=a[i]; for(; j>=0&&temp
/** * 1.求从10到100中能被3或5整除的数的和 * */ int sum = 0; for(int i = 10; i <= 100; i++) { if(i % 3 == 0 || i % 5 == 0) { sum += i; } } System.out.println(sum); /** * 2.将一个字符串逆序,不要使用反转函数 */ String message = "he saw a racecar"; StringBuilder rev = new StringBuilder(); for(int i = message.length() - 1; i >= 0;i--) { rev.append(message.charAt(i)); } System.out.println(rev.toString()); /** * 3.反转一个栈【后进先出】 * pop():移除堆栈顶部的对象,并作为此函数的值返回该对象。 * 堆栈顶部的对象(Vector 对象中的最后一项)。 * * peek():查看堆栈顶部的对象,但不从堆栈中移除它 * 堆栈顶部的对象(Vector 对象的最后一项)。 * */ Stackitems = new Stack (); items.push("he"); //栈底 items.push("saw"); items.push("a"); items.push("racecar"); //栈顶 reverseStack(items); while(items.size()>0) { System.out.println("反转后的栈,从栈顶取:" + items.pop()); } public static void reverseStack(Stack stack) { Queue rev = new LinkedList (); while(stack.size() > 0) { rev.offer(stack.pop()); } while(rev.size() > 0) { stack.push(rev.poll()); // poll()获取并移除此队列的头,如果此队列为空,则返回 null。 } }
这样也可以哦:
public static void main(String[] args) { Stackstack1 = new Stack (); stack1.push("he"); stack1.push("saw"); stack1.push("a"); stack1.push("racecar"); System.out.println("***********************"); Stack stack2 = new Stack (); while(stack1.size() > 0) { stack2.push(stack1.pop()); } while(stack2.size() > 0) { System.out.println(stack2.pop()); } }