1冒泡法排序:
for(int i = 0; i< n-1; i++)
for(int j = 0; j< n-i -1; j++)
{
if( a[j] > a[j+1])
std::swap(a[j], a[j+1])
}
原理:对一个数组中的元素进行相邻元素比较,前大后小就交换,这样相邻元素不停比较,最后将本次比较的最大值排在最后,因为n个数只要n-1次排序,随着排序的进行,后面比较排序的舒就会每次减少一个,这样就出现了n-i-1
2选择排序
for(int i = 0; i< n-1; i++){
int min = i;
for(int j = i + 1; j< n; j++)
{
min = a[j] > a[j+1]? j: min;
}
std:swap(a[i], a[min]);
}
原理:选择是进行遍历找到排序中的最小值,将其记录下来,然后将其与未排序号的数列的第一个元素进行交换,也就是每次从未排好的序列中取最小的将其放在未排序好的最前面
3插入排序
template
void InSert(T *a, int n){
int old =0 ,new;
for(new = 1; new <n ; new++){
T temp = a[new];
old = new;
while( old > 0 && a[old -1] > temp)
a[in] = a[old -1];
–old;
}
a[old] = temp;
}
原理:将数组分为未排和排了的两类,排列后的为old,为排的为new,将新元素插入时,与原来已经排序好的数组的元素的从最大到进行比较,直到比较比这个数不大,那么就插入这个位置