基础的算法

  1. 插入排序(这个效率还是可以的,一个数组有8万个元素,排序大约6秒)
    // 插入排序
    // 思路 : 就是将n个排序的元素看成是一个有序和无序的列表,开始的时候有序的列表只包含一个元素,无序列表中包含n-1个元素,排序的的过程每次从无序的列表中取出第一个元素,吧他的排序码与有序列表的排序码进行比较,将他插入到有序列表中的适当位置,使他成为有序的列表。
    void chaRuPaiXu() {

    int a[10]={1,5,9,8,7,6,3,5,8,4};

    for (int i =1;i<10 ;i++){
    // 保存当前的的array【i】的值;
    int insertVal = a[i];
    // 拿到当前值的前一个index
    int index = i-1;

// 判断循环的条件
while (index>=0&&insertVal >a[index]) {
// 将arr【index】向后移动
a[index+1]=a[index];
// 让index 向前移动
index--;

    }

// 如果没有进入循环,就不交换位置
a[index+1]=insertVal;
}

for (int j=0 ; j<10; j++) {
    NSLog(@"%d",a[j]);
}
}

// 快速排序 核心思想就是递归

void sort (int left ,int right, int array[]){
int l = left;
int r= right;
int pivot = (int)array[(left+right)/2];
int temp =0;
while (l<r) {
while (array[l]<pivot) l++;
while (array[r]>pivot) r--;
if (l>=r) break;
temp = array[l];
array[l]=array[r];
array[r]= temp;

    if (array[l]==pivot) --r;
    if (array[r]==pivot) ++l;
    if (l==r) {
        l++;
        r--; 
    }
    if (left<r) sort(left,r,array);
    if (right>1) sort(1,right,array);
}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容