zoukankan      html  css  js  c++  java
  • 插入排序

    /*

    *插入排序理论我就不写了,网络上应该多的是,比我要好。
    *今天练习一下插入排序,插入排序还是比较稳定的一个算法,不算太坏。适用于少量数据
    *在最坏情况下才是O(n^2),最好情况O(n),因为最好情况下,不需要内排序了呀
    *为了惩罚自己,再写一遍,还是写到熟练吧,额额。。。
    */

    /*
    **************开始了,再来一遍,写到熟练为止。
    *********换了一个思路********
    void sort(int a[],int length){
    for(int i=1; i<length; i++){
    int max = a[i];
    int j=i;//j变成‘i’了
    while(j>0 && max<a[j-1]){
    a[j] = a[j-1];
    j--;
    }//while
    a[j] = max;
    }
    }

    void sort(int a[],int length){
    for(int i=1; i,lengthl;i++){
    int max = a[i];
    int j = i;
    for(;j>0;){
    if(max<a[j-1]){//比较
    a[j]=a[j-1];
    j--;
    }
    else {
    break;//不满足就要跳出了。
    }//ifEnd
    }//forEnd
    a[j] = max;
    }//fiorEnd
    }
    */
    #include <stdio.h>
    #include "stdlib.h"


    void sort(int a[], int length){//插入排序
    for (int i = 1; i < length; i++){//循环遍历
    int temp = a[i];//假设a[i]是最大元素呢*——*
    int j =i-1;//用a[i]和剩下的元素比较
    //今天这里没有整明白,有点尴尬*__*
    //是和max比较大小,不要整错了,你的目的就是用temp和剩下的元素比较
    while (j >=0 && temp<a[j]){//
    a[j+1] = a[j];//交换值,因为满足条件,a[i]就不是最大的了。所以要换位置了,但要用temp临时保存a[i],因为后面要用到。
    j--;
    }//forEnd
    a[j+1] =temp ;//如果搞不清,就把j带入j+1,等于i。可以当个结论记一下。
    }//forEnd
    }

    int main()
    {
    //写的实在有点烂了,这个测试运行,可以改进一下,不算太难。
    int a[] = {1,5,0,3,9,4};
    sort(a,6);
    for (int i = 0; i < 6;i++){
    printf("%d\t",a[i]);
    }
    return 0;
    }

    代码大大
  • 相关阅读:
    字符串指针与字符数组的区别
    为什么stc15的单片机,运行了几秒后就蹦了
    判断一个数是否是2的整数次幂
    Ubuntu下使用gcc编译c文件,未识别cos,sin
    数字图像基本处理算法
    开发板启动时,内核打印出"can't access tty,job control turned off"
    c语言里如何调用汇编里的变量?
    leetcode516 Longest Palindromic Subsequence
    leetcode523 Continuous Subarray Sum
    leetcode650 2 Keys Keyboard
  • 原文地址:https://www.cnblogs.com/zanzg/p/7787705.html
Copyright © 2011-2022 走看看