插入升序算法

昨天看了一篇关于菜鸟与高级程序员区别的文章, 菜鸟遇到问题就求助外界,而高级程序员遇到问题第一步是静静的思考。今天一大早就写了一个算法,按照高级程序员的规矩来写的。

/* @功能:插入排序之升序排列
 *@prama:inarr[]  元素是乱序的数组
 *@result:outarr[] 降序排列的数组
 */

 void insert_sort(int *arr,int len)
 {
     int i,j,k;
     for (i=0;i<=len,i++)
     {
         for(j=0;j<=len-j;j++)
         {
             if(arr[j]>arr[j+1])
             {
                 arr[j]=arr[j]^arr[j+1];
                 arr[j+1]=arr[j]^arr[j+1];
                 arr[j]=arr[j]^arr[j+1];
             }else continue;
         }
     }
     for(k=0;k<len;k++)
     {
         printf("%d",arr[k]);
     }
 }
 int main()
 {
     int arr[]={2.4.5.1.9};
     int len=5;
     insert_sort(arr,len);
 }

写程序的过程中:我想写了什么?

第一就是我需要把数组遍历一遍,这需要一层循环,我还需要一层循环用来调整位置,所以我就先把两层循环给敲上。然后就是循环条件的限制,用几个数排排序就知道怎么写限制条件了。还有就是数据交换,我使用的异或运算,这种方法还是之前在一本书上看到了,既不用借助第三变量,也不用担心溢出问题。

最后给大家推荐一篇文章,干货。点击下面链接

程序员中“菜鸟”和大神之间的区别到底在哪

我想把函数写到别的文件中,这样代码就简洁很多,而且我可以在一个文件里定义很多函数了。问题来了,是头文件(.h)还是(.c)文件中呢?

我尝试了讲函数定义直接拷到一个.c文件中。然后再main函数所在的文件中用引入,使用双引号。程序正常运行。

后来我又把直接拷到.h文件中,当然我要上个.c文件删掉了,哈哈,仍然正常运行?

为什么呢?

再复习一下程序运行原理,也可以参考下这个链接

头文件与源文件的关系

时间: 2024-11-03 22:10:32

插入升序算法的相关文章

android浏览器书签插入去重算法

关于浏览器插入书签重复问题一直没有找到好的算法,无奈只能暂时写个笨办法了,还请路过的大神指点一二,我的逻辑是把要插入的书签封装成一个集合,在插入之前先查询出本地浏览器里的书签集合,用一个双重循环判断url和title同时相同则判定为重复,然后添加到一个新的集合,循环完毕从需要插入的集合里边remove掉重复的集合 代码如下: private List<BookMark> removeRepeat(List<BookMark> restore,List<BookMark>

排序算法-(冒泡、选择、插入算法)

运行效率较慢的三大排序算法:冒泡.选择与插入算法,时间复杂度都为O(n2),运行效率较慢. #python 代码实现如下所示: li=[2,1,4,5,7,8,9,5,3]#冒泡算法(升序算法)O(n2)import randomfrom cal_time import *@cal_timedef bubble_sort(li): for i in range(len(li)-1): #第i趟 exchange=False for j in range(len(li)-i-1): #无序区域为n

JAVA 数组算法(复制、查找、插入)

一.复制数组算法 //数组复制算法 public class Test{ public static void main(String[] args){ int[] arrA = {100,800,500,600,700}; int[] arrB = new int[arrA.length]; //用for循环把A的对应下标值复制给B for(int i=0;i<arrA.length;i++){ arrB[i] = arrA[i]; } //输出arrB for(int i=0;i<arrB

数据结构杂谈(一)浅谈基本排序算法

0.基本概念 记录:待排序的项目 关键词:决定排序结果 稳定性:相同关键词的记录保持原来的相对次序 1.1插入排序(Insertion Sort) 算法思想 一种简单直观的排序算法,工作原理是通过构建有序序列:对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法描述 具体算法描述如下: 从第一个元素开始,该元素可以认为已经被排序 取出下一个元素,在已经排序的元素序列中从后向前扫描 如果该元素(已排序)大于新元素,将该元素移到下一位置 重复步骤3,直到找到已排序的元素小于或者等于

全解排序算法

全解排序算法 排序:就是重新排列表中的元素,是表中的元素满足按关键字递增或递减的过程.为了查找方便,通常要求计算机中的表是按关键字有序的.排序的确切定义如下: 输入:n个记录R1,R2, ...,Rn对应的关键字为k1,k2,...,kn. 输出:输入序列的一个重排R1',R2', ...,Rn',使得有k1'<=k2'<=...<=kn'(其中"<="办以换成其他的比较大小的符号). 算法的稳定性:如果待排序表中有两个元素Ri.Rj,其对应的关键字keyi=k

iOS 开发中常用的算法

1.冒泡排序: 冒泡算法是一种基础的排序算法,这种算法会重复的比较数组中相邻的两个元素.如果一个元素比另一个元素大(小),那么就交换这两个元素的位置.重复这一比较直至最后一个元素.这一比较会重复n-1趟,每一趟比较n-j次,j是已经排序好的元素个数.每一趟比较都能找出未排序元素中最大或者最小的那个数字.这就如同水泡从水底逐个飘到水面一样.冒泡排序是一种时间复杂度较高,效率较低的排序方法.其空间复杂度是O(n). 1, 最差时间复杂度 O(n^2) 2, 平均时间复杂度 O(n^2) 实现思路 1

python 十大经典排序算法

python 十大经典排序算法 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等.用一张图概括: 关于时间复杂度: 平方阶 (O(n2)) 排序 各类简单排序:直接插入.直接选择和冒泡排序. 线性对数阶 (O(nlog2n)) 排序 快速排序.堆排序和归并排序. O(n1+§)) 排序,§

升序堆和降序堆(优先队列) 洛谷1801

1 // 洛谷1801 2 // 一个升序堆,一个降序堆 3 // 降序堆维护序列的前i个最小值 4 // 插如元素的时候,如果x小于降序堆最大值,则替换,并将最大值插入升序堆:否则,直接插入升序堆 5 // 每次输出升序堆的最小值即可 6 7 8 #include <bits/stdc++.h> 9 using namespace std; 10 #define LL long long 11 typedef pair<int,int> pii; 12 const int inf

8大排序算法图文讲解

排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等. 本文将依次介绍上述八大排序算法. 算法一:插入排序 插入排序示意图 插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法步骤: 1)将第一待排序序列第一