直接插入排序
2014-06-27 20:50
204 查看
基本思想:
当插入第 i 个对象时,前面的 R [1],…, R[i-1]已经排好序, 此时用R[i]的关键字与R[i-1], R[i-2], … 的关键字顺序进行比较,
找到插入位置即将R[i]插入, 原来位置上对象向后顺移。
当插入第 i 个对象时,前面的 R [1],…, R[i-1]已经排好序, 此时用R[i]的关键字与R[i-1], R[i-2], … 的关键字顺序进行比较,
找到插入位置即将R[i]插入, 原来位置上对象向后顺移。
#include<stdio.h> void Swap(int &a,int &b) { int temp; temp=a; a=b; b=temp; } void Insertsort2(int a[], int n) { int i, j; for (i = 1; i < n; i++) { for (j = i - 1; j >= 0 && a[j] > a[j + 1]; j--) { Swap(a[j], a[j + 1]); } } } void Insertsort1(int a[], int n) { int i, j; int m; for(i=1; i<n; i++) { m=a[i]; j=i-1; while(m < a[j] && j>=0) { a[j+1]=a[j--]; } a[j+1]=m; } } int main() { int a[10]; for(int i=0;i<10;i++) { scanf("%d",&a[i]); } Insertsort1(a, 10); // Insertsort2(a, 10); for(int i=0;i<10;i++) { printf("%d ",a[i]); } printf("\n"); return 0; }