三種排序方法(冒泡,選擇,插入排序)

@一路桐行 2022-01-07 06:32:32 阅读数:256

排序 方法 冒泡 插入排序 插入

冒泡排序實際上是算最簡單的排序方法我們可以進行的

int main()
{
int tmp=0;
int arr[]={1,4,5,9,8,7};
int sz=sizeof(arr)/sizeof(arr[0]);
for(int i=0;i<sz-1;i++)
{
for(int j=0;j<sz-i-1;j++)
{
if(arr[i]>arr[i+1])
{
tmp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=tmp;
}
}
}
for(int i=0;i<sz;i++)
{
cout<<arr[i]<<" ";
}
return 0;
}

我們每進行一次完整的排序就會將一個最大值或者最小值挪動到整個數組的最右邊去

2.選擇排序的方法

int findMaxPos(int arr[],int n) //尋找最大數據的比特置
{
int max=arr[0];
int pos=0;
int i=0;
for(i=0;i<n;i++)
{
if(arr[i]>max)
{
max=arr[i];//這個可以用來找最大值
pos=i;
}
}
return pos;//這個時候我們返回的是比特置 也就是最大值的比特置
}
void selectionSort(int arr[],int n)
{
while(n>1)//這個進行n-1次循環操作處理
{
int pos=findMaxPos(arr,n);
int tmp=arr[pos];
arr[pos]=arr[n-1];//最大值和最後一個值進行交換
arr[n-1]=tmp;//這個時候將1值放進去
n--;//n-- 是為了使得
}
}
int main()
{
int arr[]={1,23,44,7,8,19};
int sz=sizeof(arr)/sizeof(arr[0]);
selectionSort(arr,sz);
for(int i=0;i<sz;i++)
{
cout<<arr[i]<<" ";
}
return 0;
}

 

這個數據就是進行的是我們將最大值找出來返回它的下標 然後將他們的下標進行操作處理

3.插入排序操作處理

void insert(int arr[],int n)
{
int key=arr[n];//這個是我們進行插入的數據
int i=n;//i代錶的是下標
while(arr[i-1]>key)
{
arr[i]=arr[i-1];
i--;
if(i==0)//這個是處理的下標操作 不用越界
{
break;
}
}
arr[i]=key;
}
void insertSort(int arr[],int n)
{
for(int i=1;i<n;i++)
{
insert(arr,i);//這個是我們進行選擇那幾個順序 我們從1開始選擇 到n
}
}
int main()
{
int arr[]={1,22,3,7,18,9};
int sz=sizeof(arr)/sizeof(arr[0]);
int i;
insertSort(arr,sz);
for(i=0;i<sz;i++)
{
cout<<arr[i]<<" ";
}
return 0;
}

 

 

版权声明:本文为[@一路桐行]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201070632321801.html