插入排序
基本原理:
依次遍历所有元素,将每次遍历的元素与所有它之前的元素比较一遍,并放到合适的位置。
#include <iostream> int main() { int arry[] = {5,3,2,4,6,1,8,9,0,7}; for (int i = 1; i < 10; i++)// i=1开始,因为第一个元素认为是已经排好序了的 { for (int j = i; j > 0; j--)//对之前的元素进行比较并排序 { if (arry[j] < arry[j - 1]) { int tmp = arry[j];//起始元素 arry[j] = arry[j - 1]; arry[j - 1] = tmp; } } for(int i = 0; i<10;i++) printf("%d",arry[i]); printf(" "); } return 0; }
第二种写法
#include <iostream> int main() { int arry[] = {5,3,2,4,6,1,8,9,0,7}; for (int i = 1; i < 10; i++)// i=1开始,因为第一个元素认为是已经排好序了的 { for (int j = 0; j < i; j++)//对之前的元素进行比较并排序 { if (arry[i] < arry[j])//arry[i]是新添加的元素 { int tmp = arry[j];//起始元素 arry[j] = arry[i]; arry[i] = tmp; } } for(int i = 0; i<10;i++) printf("%d",arry[i]); printf(" "); } return 0; }