码迷,mamicode.com
首页 > 编程语言 > 详细

整数排序(入门)

时间:2017-12-22 23:52:37      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:ali   gpo   交换操作   cin   turn   post   操作   space   font   

给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。

这道题就是考察排序算法

我上网了解了一下O(n2)的算法有以下几种

(1)冒泡排序:顾名思义从头开始将最大的慢慢与后一个元素作比较,像气泡一样慢慢浮上去

 

public class Solution {
    /*
     * @param A: an integer array
     * @return: 
     */
    public void sortIntegers(int[] A) {
        int n = A.length;
        for(int i = 0 ; i < n ; i++){
            for(int j = i + 1 ; j < n ; j++){
                if(A[i]>A[j]){//每次与后面的元素进行一一对比 然后符合条件就交换(交换非常耗时间)  
                    int temp = A[i];
                    A[i] = A[j];
                    A[j] = temp;
                }
            }
        }
    }
}

(2)选择排序:将选取元素后面的元素选取最小(最大)元素进行比较交换,将小(大)的元素放在最前面

 

public class Solution {
    /*
     * @param A: an integer array
     * @return: 
     */
    public void sortIntegers(int[] A) {
        int n = A.length;
        for(int i = 0 ; i < n ; i++){
            int min = A[i];//将当前元素设置为最小的元素
            int k = i; //角标也设置成当前
            for(int j = i+1 ; j < n ; j++){
                if(A[j]<min){ //当符合条件就将至赋值给min并记录角标
                    min = A[j];
                    k = j;
                }
            }
            int temp = A[k]; //在取得最小值和角标后进行交换操作(注:这里缺少一个从别人那里借鉴小优化:将temp与A[i]比较然后判断不同在进行交换)
                A[k] = A[i];
                A[i] = temp;
        }
    }
}

(3)插入排序:将当前元素与之前的元素进行比较放在合适的位置上,整理扑克就是这个原理

class Solution:
    """
    @param: A: an integer array
    @return: 
    """
    def sortIntegers(self, A):
        n = len(A)
        for i in range(1,n):
            temp = A[i]#记录当前值,因为当前只可能要跟前面的制进行交换,如果要交换,必然使前面交换的位置向后移一位使得原来的位置上的元素被覆盖
            j = i-1#从前一位开始比较
            while j >= 0 and temp < A[j]:#当前一个位置的角标超出了0或者比当前值小(因为前面的值都是排好顺序的)就停止循环查找,
                A[j+1] = A[j]#将交换位置后面的数据往后移一位
                j = j-1
            A[j+1] = temp #因为最后一次的循环 j--了 j上的元素肯定比temp小所以我们要把元素放到j后一位
 

 写到最后,我发现我越来越喜欢python这门语言,写插入排序时感觉代码简单粗暴。。。

 

  

 

整数排序(入门)

标签:ali   gpo   交换操作   cin   turn   post   操作   space   font   

原文地址:http://www.cnblogs.com/KanHin/p/8087922.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!