史上最详细的C语言和Python的插入排序算法
colaszj 人气:1
史上最详细的C语言和Python的插入排序算法
插入排序原理:所谓插入排序,就像我们在打牌(斗地主)时,整理我们自己手中自己的牌一样,就像是2,1,3,9,J,K,5,4,这四张牌.
我们要把它其中的几张牌整理成12345这样的 然后出牌,是不是就得将这几张牌放到一起,或者是说以其中的一张牌为中心,将其他四张按大小进行插入。
话不多说上代码:
C语言:
1 void insert(){ 2 /https://img.qb5200.com/download-x/define a array which have ten number 3 int init_array[10]={8,2,1,9,77,55,66,42,3,5}; 4 int j; 5 int len = sizeof(init_array)/4;//获取数组实际长度 6 //从第二位开始比较前一位 7 for (int i = 1; i < len; i++) { 8 int buffer=init_array[i]; 9 //这里为何要定义一个buffer呢 10 // 因为后面要对数组元素进行后移 更改顺序 ,所以i不变,但是init_array[i]会变 11 j=i-1; 12 while(j>=0&&buffer>init_array[j]) 13 //如果出现比init_array[j]还小的数值,这里就对前面排好序的数组进行后移 14 //大于号就是从大到小的顺序 15 { 16 init_array[j+1]=init_array[j]; 17 j--; 18 } 19 init_array[j+1]=buffer; 20 //将buffer传给init_array[j+1],因为init_array[j]是比buffer还小的数。 21 // 按照从大到小的顺序,所以buffer要放到init_array[j+1]后面。 22 23 } 24 for (int k = 0; k < len; ++k) { 25 printf("%d\n",init_array[k]); 26 } 27 }
Python:
def insert(): init_array=[2,3,5,1,22,99,44,6,7] for i in range(1,len(init_array)): j=i-1 buffer = init_array[i]#这个buffer很重要,这里为何要定义一个buffer呢因为后面要对数组元素进行后移 更改顺序 ,所以i不变,但是init_array[i]会变 while(j >= 0 and buffer > init_array[j]):#这里也要用buffer进行比较,原因相同 init_array[j+1] = init_array[j] j = j-1 init_array[j+1] = buffer print(init_array) insert()
借此图片 如有侵权 联系本人删除
加载全部内容